首頁 >web前端 >js教程 >如何在 JavaScript 中使用 setTimeout 建立和管理 Promise?

如何在 JavaScript 中使用 setTimeout 建立和管理 Promise?

Linda Hamilton
Linda Hamilton原創
2024-12-06 00:27:11711瀏覽

How to Create and Manage Promises Using setTimeout in JavaScript?

如何從setTimeout

建立Promise

為setTimeout 建立基本Promise

建立一個承諾,非同步可以在setTimeout 回調觸發後,我們可以將setTimeout 函數包裝在Promise在建構函式中,如下面的程式碼片段所示:

<br>function setTimeoutReturnPromise(delay) {<br> return new Promise((resolve )=> {<pre class="brush:php;toolbar:false">setTimeout(resolve, delay);

});
}

此函數將延遲作為參數並傳回承諾。 Promise 將在指定的延遲過去後解析,並且 setTimeout 函數的回呼將會執行。

將 Promise 與 async 結合使用

現在,我們的 async 函數可以使用 setTimeoutReturnPromise 函數建立一個可以傳回的 Promise。這允許我們在呼叫 setTimeout 回調後使用 then() 方法執行程式碼:

<br>async(function() {<br> setTimeoutReturnPromise(5000).then()=>> {<pre class="brush:php;toolbar:false">console.log("async called back");

});
});

更新ES2015 及更高版本

自從ES2015 和現代JavaScript 引入以來,Promise 已經成為內建的特徵。語法進行了簡化,如下所示:

<br>function later(delay) {<br> return new Promise((resolve) =>; {<pre class="brush:php;toolbar:false">setTimeout(resolve, delay);

});
}

使用箭頭函數和可選的分辨率值參數,可以進一步壓縮程式碼:

<br>const later = (延遲, 值) => new Promise(resolve => setTimeout(resolve, delay, value));<br>

可取消的Promise(可選)

如果你想取消超時,你可以回傳一個有promise和cancel的物件方法:

<br>const later = (delay, value) =>; {<br> 讓計時器 = 0;<br> 讓拒絕 = null;<br> const Promise = new Promise((resolve, _reject) => {<pre class="brush:php;toolbar:false">reject = _reject;
timer = setTimeout(resolve, delay, value);

});
回傳{

get promise() { return promise; },
cancel() {
  if (timer) {
    clearTimeout(timer);
    timer = 0;
    reject();
    reject = null;
  }
}

};
};

此方法允許您使用cancel() 方法取消逾時並拒絕承諾。

以上是如何在 JavaScript 中使用 setTimeout 建立和管理 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn