以下は、長さをとり、setTimeout
を使用してデクリメントする単純な再帰関数です。長さが<=
0になると、完了です。私は同じように使用できるように、私は(純粋なJavaScriptで)この関数を書くことができますどのようにこの再帰関数を宣言する方法
:
animate(999).then(...)
更新:
これが私が試したことです。私が抱えている問題は、resolve
が呼び出されていないか、別の約束で呼ばれているようです。
const animate = length => {
return new Promise((resolve, reject) => {
console.log(length)
length -= 10
if (length <= 0) {
length = 0
resolve(true)
return // without this the function runs forever
}
setTimeout(() => {animate(length)}, 10)
})
}
animate(999).then(result => console.log(result))
**ワーキング更新(が、それを理解していない)**
const animate = length => {
return new Promise((resolve, reject) => {
console.log(length)
length -= 10
if (length <= 0) {
length = 0
return resolve(true)
}
setTimeout(() => {resolve(animate(length))}, 10)
})
}
animate(999).then(result => console.log(result))