假设我正在使用以下代码连续运行几个 promise:
let paramerterArr = ['a','b','c','d','e','f']
parameterArr.reduce(function(promise, item) {
return promise.then(function(result) {
return mySpecialFunction(item);
})
}, Promise.resolve())
代码只是简单地调用 mySpecialFunction(它返回一个 promise ),等待 promise 得到解决,然后再次调用 mySpecialFunction 等等。因此该函数以正确的顺序为数组中的每个元素调用一次。
我如何确保每次调用 mySpecialFunction(item)
之间至少有 50 毫秒的延迟?
以正确的顺序执行 promise 很重要,mySpecialFunction
的执行时间每次都不同。
我想同步 sleep 会起作用,但我不打算在单独的线程中运行这段代码,所以它会导致浏览器中令人讨厌的 ui 卡住。
我不确定 setTimer 是否可以以某种方式用于此目的。我的意思是我不能延迟 promise 的返回。
最佳答案
答案很好,但它们等待的时间太长,因为所有答案都在等待实际操作是否已经超过 50 毫秒。
你可以为它使用 Promise.all
。
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
let parameterArr = ['a','b','c','d','e','f'];
parameterArr.reduce(function(promise, item) {
return promise.then(function(result) {
return Promise.all([delay(50), myPromise(item)]);
});
}, Promise.resolve());
关于javascript - promise 链中 promise 之间的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079410/