[英]Promise resolved too fast
我正在使用Promises,同時我有一個加載動畫。
問題是我的諾言很快得到解決,裝載機很快消失了。
因此,我想發布一個承諾,如果該承諾在3秒之前解決,請等待剩余時間。
例
export const operation = () => {
const a = new Date();
const myPromise = doAction().then(() => {
const b = new Date();
if((b - a) < 3000)
operationIsDone();
else
setTimeout(() => {operationIsDone();}, b - a)
});
}
有沒有npm或更好的方法呢? 提前致謝。
使用只需等待最少等待時間的第二個承諾要容易得多。 然后使用Promise.all
等待兩者完成。 這樣,您的腳本將始終至少等待默認延遲,但是如果yourOwnPromise
花費的時間更長,則yourOwnPromise
時間也會更長。
const wait = delay => new Promise(resolve => setTimeout(resolve, delay)); const doAction = () => wait(500); // TODO replace this with your own function const yourOwnPromise = doAction(); yourOwnPromise.then(() => { console.log('yourOwnPromise resolved now'); }); Promise.all([yourOwnPromise, wait(3000)]).then(() => { console.log('both resolved now'); });
有關詳細信息,請參見Promise.all
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.