return await new Promise(function (resolve, reject) {
//some work goes here
resolve(true)
});
带设置超时
return await new Promise(function (resolve, reject) {
//some work goes here
setTimeout(function() { resolve(true); }, 5000);
});
使用setTimeout,即使我的任务在1秒内完成,它也会等待5秒。我的要求是,如果任务在5秒内完成,则承诺应立即解决,否则将在5秒内解决
4条答案
按热度按时间6ie5vjzr1#
任务正常完成时清除超时:
zf2sa74q2#
杰里米·蒂尔的回答是我认为最好的练习。
只是因为我花了一些时间写了一段代码供任何人使用,我张贴它,也许它会帮助一些人与他们的代码实验。
只是不要忘记实现Jeremy Thille clearTimeout。
41zrol4v3#
你可以这样做:
这里要注意几点:
mrfwxfqh4#
这里有一个使用Promise.race的例子。这个想法是在Promise.race well做我们的工作,并将工作承诺与另一个在给定时间内解决的承诺进行比赛(下面的例子中假设为10秒),