[英]Converting async es6 syntax function to es5 syntax async function
I'm working with a package where I'm converting the function definitions of that package ( https://github.com/3DJakob/react-tinder-card/blob/master/index.js ) back to es5 syntax, however, I'm not being able to convert the animateOut function since it is an async function: I'm working with a package where I'm converting the function definitions of that package ( https://github.com/3DJakob/react-tinder-card/blob/master/index.js ) back to es5 syntax, however,我无法转换 animateOut function,因为它是异步 function:
const animateOut = async (element, speed, easeIn = false) => {
const startPos = getTranslate(element)
const bodySize = getElementSize(document.body)
const diagonal = pythagoras(bodySize.x, bodySize.y)
const velocity = pythagoras(speed.x, speed.y)
const time = diagonal / velocity
const multiplier = diagonal / velocity
const translateString = translationString(speed.x * multiplier + startPos.x, -speed.y * multiplier + startPos.y)
let rotateString = ''
const rotationPower = 200
if (easeIn) {
element.style.transition = 'ease ' + time + 's'
} else {
element.style.transition = 'ease-out ' + time + 's'
}
if (getRotation(element) === 0) {
rotateString = rotationString((Math.random() - 0.5) * rotationPower)
} else if (getRotation(element) > 0) {
rotateString = rotationString((Math.random()) * rotationPower / 2 + getRotation(element))
} else {
rotateString = rotationString((Math.random() - 1) * rotationPower / 2 + getRotation(element))
}
element.style.transform = translateString + rotateString
await sleep(time * 1000)
}
Can someone help me?有人能帮我吗? Thanks!
谢谢!
Essentially you'll need to expand any await
s to a promise, and make sure that the animateOut
is also treated with .then()
as opposed to await
:本质上,您需要将任何
await
扩展为 promise,并确保animateOut
也被处理为 .then .then()
而不是await
:
var animateOut = function(element, speed, easeIn) {
easeIn = easeIn || false;
// animateOut code here
return sleep(1000).then(function() {
console.log('Already slept, done.')
})
}
animateOut().then(function() {
console.log('Done animating out')
})
function sleep(time) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve();
}, time)
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.