摘要:概述是異步編程的一種解決方案,很好的解決了傳統異步編程中的回調地獄問題。語法中闡述,有三種狀態,分別是進行中已完成已失敗。方法使用要使用方法我們首先要創建實例,也就是說我們要一個對象。
1. Promise概述
promise是異步編程的一種解決方案,很好的解決了傳統異步編程中的回調地獄問題。同時我們可以把promise可以理解為一個容器,這個容器里面存放著一些未來才會結束的事件(通常都是一些異步操作)。
在es6語法中,Promise是一個構造函數,用來生成Promise實例。語法中闡述,Promise有三種狀態,分別是Pending(進行中)、Resolved(已完成)、Rejected(已失敗)。Promise的狀態只有兩種可能,1、Pending->Resolved
2、Pending->Rejected 。以上兩種情況是互斥的,也就是說只要從Pending狀態變成Resolved狀態,這個狀態就會凝固。就不會再從Pending狀態變成Rejected狀態
2. Promise構造函數解析Promise構造函數接受一個函數作為參數,這個函數有兩個參數,分別是resolve和reject。這兩個參數是兩個函數,由Javascript引擎提供,不用自己部署。
下面我們就舉例說明,
var p = new Promise(function(resolve, reject){ //開始異步操作 setTimeout(function(){ console.log("異步操作完成"); /* if(true){ resolve("異步操作成功調用我"); }else{ reject("異步操作失敗調用我"); } */ }, 2000); });3. Promise方法解析
通過上圖我們可以看到Promise本身有all、race、reject、resolve等方法,原型上面有then、catch等方法。
1)、then()方法使用
要使用then()方法我們首先要創建Promise實例,也就是說我們要new一個Promise對象。在我們實際的開發中都是把這個過程封裝到一個函數中,在函數中返回一個Promise實例。如下實例, function runAsync(){ var p = new Promise(function(resolve, reject){ //異步操作開始 setTimeout(function(){ console.log("異步操作完成"); resolve("異步操作成功調用我"); /* if(true){ resolve("異步操作成功調用我"); }else{ reject("異步操作失敗調用我"); } */ }, 2000); }); return p; } runAsync() Promise實例生成以后,就可以用then方法分別指定Resolved狀態和Reject狀態的回調函數。如下, runAsync().then( function (data){ console.log(data); })
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/93534.html
摘要:模塊化,就是字面意思的模塊化。比如模塊化一個表單驗證,模塊化一個輪播圖等。但是這樣的編寫還存在一個問題,對象中的函數或者屬性對外部是可見的,并且是可修改的。 模塊化,就是字面意思的模塊化。比如模塊化一個表單驗證,模塊化一個輪播圖等。 在平常 JavaScript 代碼的編寫中,我們一般是保持著這樣一個順序。 1. 無腦式自然編寫 function a() { alert(a) } ...
摘要:主題大綱淺述采樣與端到端何為何為端到端何為采樣的做法與弊端嘉賓介紹高馳濤,官方開發組成員,作者,云智慧高級架構師。 極牛技術實踐分享活動 極牛技術實踐分享系列活動是極牛聯合頂級VC、技術專家,為企業、技術人提供的一種系統的線上技術分享活動。 每期不同的技術主題,和行業專家深度探討,專注解決技術實踐難點,推動技術創新,每兩周的周三20點正式開課。歡迎各個機構、企業、行業專家、技術人...
前言 今天就簡單總結一下promise的用法,在用promise之前,我們要先了解一下什么promise,這個東西是用來干什么的? 通俗易懂的講,promise其實就是一個構造函數,是用來解決異步操作的,我們平時其實還是會用到挺多的,比如我們經常會嵌套一層層的函數 step1(function (value1) { step2(value1, function(value2){ s...
摘要:入門之基本用法背景在我們使用異步函數比如進行編寫代碼,如果我們需要很多個請求不同的接口,而下一個接口需要依賴上一個接口的返回值,這樣,我們的代碼則需要在各種回調函數中嵌套,這樣一層一層地下去,就形成了回調地獄。 Promise入門之基本用法 背景 在我們使用異步函數比如ajax進行編寫代碼,如果我們需要很多個ajax請求不同的接口,而下一個接口需要依賴上一個接口的返回值,這樣,我們的代...
摘要:和塊級作用域實際上為新增了塊級作用域。這表示外層代碼塊不受內層代碼塊的影響。塊級作用域的出現,實際上使得獲得廣泛應用的立即執行函數表達式不再必要了。其他騷氣方法參考阮老師并發模型與事件循環 沒有錯,這道題就是: for (var i = 0; i< 10; i++){ setTimeout(() => { console.log(i); }, 1000...
閱讀 2497·2021-10-19 11:45
閱讀 2489·2021-09-30 09:56
閱讀 1442·2021-09-30 09:47
閱讀 602·2019-08-30 15:53
閱讀 1841·2019-08-30 15:44
閱讀 590·2019-08-30 12:52
閱讀 1093·2019-08-30 11:16
閱讀 1617·2019-08-29 16:36