亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中Promise怎么使用

發布時間:2022-08-16 09:30:19 來源:億速云 閱讀:150 作者:iii 欄目:開發技術

這篇“JavaScript中Promise怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“JavaScript中Promise怎么使用”文章吧。

JavaScript中Promise怎么使用

“生產代碼”是可能需要一些時間來執行的代碼。

“消費代碼”是必須等待結果的代碼。

Promise 是一個 JavaScript 對象,它鏈接生產代碼和消費代碼。

看一段最簡單的代碼:

let myPromise = new Promise(function(myResolve, myReject) {
// "Producing Code" (May take some time)

  myResolve(); // when successful
  myReject();  // when error
});

// "Consuming Code" (Must wait for a fulfilled Promise)
myPromise.then(
  function(value) { /* code if successful */ },
  function(error) { /* code if some error */ }
);

執行 new Promise 的構造函數后,會立即進入 Promise 的構造函數體內,即包含了 resolve 和 reject 方法的匿名函數。

JavaScript中Promise怎么使用

然后執行完畢。此時并不會執行 then 里的回調函數。

JavaScript中Promise怎么使用

然后 then 指定的回調函數被異步調用,注意 Chrome 里的提示:

  • 當 Promise 對象處于 pending(工作)狀態時,結果是未定義的。

  • 當 Promise 對象 fulfilled 時,結果是一個值。如下圖所示:

JavaScript中Promise怎么使用

  • 當 Promise 對象被 rejected 時,結果是一個錯誤對象。

開發人員無法訪問 Promise 屬性狀態和結果,必須使用 Promise 方法來處理 Promise。

看一個包含 UI 的例子:

JavaScript中Promise怎么使用

Promise 把異步代碼封裝起來。上圖的 setTimeout,模擬了一個耗時 3 秒的 HTTP 操作。

返回的 myPromise 對象,使用 then 注冊回調函數。回調函數不關心自己什么時候被調用。

運行顯示:

JavaScript中Promise怎么使用

3 秒后:

JavaScript中Promise怎么使用

一個文件訪問的例子:

let myPromise = new Promise(function(myResolve, myReject) {
  let req = new XMLHttpRequest();
  req.open('GET', "mycar.htm");
  req.onload = function() {
    if (req.status == 200) {
      myResolve(req.response);
    } else {
      myReject("File not Found");
    }
  };
  req.send();
});

myPromise.then(
  function(value) {myDisplayer(value);},
  function(error) {myDisplayer(error);}
);

函數體內一般是一個比較費時的操作,操作本身會立即執行,但什么時候執行結束?這就是一個異步操作了。執行結束后,通過 resolve 通知 then 注冊的回調函數。

以上就是關于“JavaScript中Promise怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉峪关市| 读书| 类乌齐县| 多伦县| 大冶市| 赫章县| 沙坪坝区| 当雄县| 罗平县| 瓦房店市| 新乡县| 金坛市| 邮箱| 九龙坡区| 格尔木市| 南通市| 贞丰县| 阜新| 太保市| 宿松县| 海伦市| 治县。| 玉林市| 德钦县| 深州市| 文安县| 英吉沙县| 东源县| 额尔古纳市| 确山县| 常熟市| 崇文区| 石屏县| 颍上县| 南木林县| 成武县| 宣汉县| 屏南县| 勐海县| 新闻| 太和县|