为了防止 hell 金字塔编程,我正在寻找使用“Promise”,但我仍然不熟悉。
例如,我有这个丑陋的代码:
var timeA = 500;
var timeB = 800;
var timeC = 750;
window.setTimeout(function(){
//do stuff 1
window.setTimeout(function(){
//do stuff 2
window.setTimeout(function(){
//do stuff 3
}, timeA);
}, timeB);
}, timeC);
如何使用 Promise 机制更改我的代码? 谢谢:)
最佳答案
您需要将 setTimeout 包装到 Promise 中。
下面我还展示了如何使用async/wait
..
var timeA = 500;
var timeB = 800;
var timeC = 750;
function wait(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
/*wait(timeA).
then(() => console.log("timeA")).
then(() => wait(timeB)).
then(() => console.log("timeB")).
then(() => wait(timeC)).
then(() => console.log("timeC")); */
async function run() {
await wait(timeA);
console.log("timeA")
await wait(timeB);
console.log("timeB")
await wait(timeC);
console.log("timeC");
}
run();
关于Javascript 将 setTimeOut 链接到 Promise,寻找一个非常示例的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51302133/