编辑:我在写这篇文章之前Resolve promises one after another (i.e. in sequence)?看过其他引用的文章,除了找到与异步函数一起尝试的东西外,我没有找到其他答案。现在。但是我相信我的问题是独立存在的。
我正在尝试进行一系列API调用,每次调用之间的延迟很短(例如50毫秒)。 这是我的尝试:
function delay(t, v) {
return new Promise(function(resolve) {
setTimeout(resolve.bind(null, v), t)
});
}
const getCoworker = function getCoworkerInfo(coworkerId) {
return apiService.getSingleCoworker(coworkerId);
}
const bookingCoworkerCalls = bookingCoworkerIdsUnique.map(coworkerId => {
return delay(50).then(() => {
console.log(coworkerId);
return getCoworker(coworkerId);
});
});
return Promise.all(bookingCoworkerCalls);
根据我的控制台日志,似乎所有这些延迟在开始时就发生一次,然后它们同时都发出呼叫。如何确保这些调用按顺序执行,每个调用之间有延迟,而不是一次执行?理想情况下,延迟对象不会在promise链的下一步中成为结果的一部分,但是在最坏的情况下,我可以将其过滤掉。 谢谢!