簡體   English   中英

承諾解決得太快

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM