gpt4 book ai didi

javascript - ES6 promise : how to chain functions with arguments

转载 作者:行者123 更新时间:2023-12-03 16:41:47 24 4
gpt4 key购买 nike

如何使用延迟链接函数。我尝试了以下方法:

Promise.resolve()
.then(setKeyframe('keyframe-0'))
.then(delay(3000))
.then(setKeyframe('keyframe-1'))
.then(delay(3000))
.then(setKeyframe('keyframe-2'))
;

function delay(ms) {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms);
});
}

function setKeyframe (name) {
var element = document.getElementsByClassName('animation-container')[0];
element.className = 'animation-container ' + name;
}

所有函数似乎都被紧接着调用。延迟函数不会延迟链。我错过了什么?

最佳答案

使用不带参数的函数可能更容易发现您的错误:

正确的做法:

Promise.resolve().then(setFirstKeyframe)

上面,函数 setFirstKeyframe.then 的参数,用于 promise 稍后调用。

错误的方式:

Promise.resolve().then(setFirstKeyframe())

这里,setFirstKeyframe 被立即调用(!),其结果(一个 promise )被传递给 then(它被忽略为 then 需要一个函数)。

对于带参数的函数使用匿名函数:

Promise.resolve().then(function() {
return setFirstKeyframe('keyframe-0');
})

这是es6 arrow functions的地方摇滚:

Promise.resolve().then(() => setFirstKeyframe('keyframe-0'))

关于javascript - ES6 promise : how to chain functions with arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36627845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com