国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解ES6 Promise的生命周期和創建

2024-05-06 15:35:49
字體:
來源:轉載
供稿:網友

一:Promise的概念

Promise的中文意思是‘承諾',什么叫承諾?承諾就是現在沒有發生,在將來的某個時刻一定會發生的事情。
放在編程語言的環境下,Promise就是異步事件的結果的占位符。我們不用去管異步事件的結果什么時候來,只需要關心異步事件的結果產生的時候,你想要做什么就對了。

二:Promise的生命周期

異步事件不是立即執行程序,它的結果可能要在動作發生后一段時間才到,所以它有個生命周期。例如用電飯鍋煮米飯,從【米下鍋開始定時】到【定時結束】,這是煮米飯的生命周期。
一個Promise的生命周期主要有2個階段:

1: unsettled(pending) 處理過程中 -> 米飯定時開始到定時結束這段期間
2: settled (fulfilled或者rejected) 處理完 -> 米飯定時結束狀態

我們看到settled階段會出現兩個可能的狀態fulfilled或者rejected,它們分別是什么意思呢:

1: fulfilled Promise操作完成的結果為成功 -> 煮米飯水的比例合適,飯熟了,成功
2: rejected Promise操作完成的結果為失敗 -> 煮米飯水放少了,飯是夾生的,失敗

Promise內部的屬性PromiseState被用來表示Promise的3種狀態:pending,fulfilled 和 rejected。但是我們無法讀取到這三個狀態,而是通過Promise提供的接口方法來書寫對應的處理程序,后面會講到。

三:如何讓創建一個Promise

相信前面通過對比煮飯這個過程,你已經對Promise的概念和生命周期有了一定的體會,接下來我們就看看如何真正第創建一個Promise(如何煮米飯)。

聲明:因為Promise有未完成的Promise和已完成的Promise不同類型,本篇我們只討論未完成的Promise。已完成的Promise后面會講,目前來說你不必關心,就當世界上沒有這個東西。

通過Promise構造函數,可以創建一個Promise。構造函數只有一個參數:一個函數,我們叫它執行器(executor)函數。你可以理解為煮飯用的電飯煲。

既然執行器(executor)函數也是一個函數,那它也有參數。對,它有2個參數:

1: resolve() 執行器(executor)函數成功時的處理函數
2: reject() 執行器(executor)函數失敗時的處理函數

我們用一段代碼來解釋一下:

let executor = function (resolve, reject) {};let promise = new Promise(executor);

通過上面的代碼示例,應該就能很清楚創建一個Promise的語法解構是怎樣的了。接下來我們用一個在Node.js中讀取文件的例子來演示:

let executor = function (resolve, reject) {  let fs = require('fs');  fs.readFile('data.txt', {encoding: 'utf8'}, function (error, content) {    if (error) {      reject(error); //在異步行為失敗時,調用reject()方法      return;    }    resolve(content); //在異步行為成功時,調用resolve()方法  });};let promise = new Promise(executor);            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 天全县| 刚察县| 平泉县| 花莲县| 利津县| 额济纳旗| 海阳市| 山丹县| 中方县| 海兴县| 绥棱县| 岳阳县| 崇左市| 安顺市| 兰考县| 安丘市| 永定县| 富平县| 涞水县| 杭锦后旗| 抚宁县| 青川县| 福建省| 江油市| 铁岭市| 府谷县| 辽源市| 东乡县| 灵山县| 沂南县| 河西区| 肃南| 濉溪县| 嘉荫县| 青州市| 正宁县| 瑞昌市| 祥云县| 龙井市| 叶城县| 墨脱县|