摘要:首先是一個構造器函數,使用它必須通過一個實例出來,并且出來的實例暈有一個內置的參數,這個參數是一個函數,這個參數擁有自己內置的兩個參數,和,并且這兩個參數也是兩個函數異步操作成功上面這個就是一個最簡單的對象屬于的一個方法,里面的兩個參數屬于
首先promise是一個構造器函數,使用它必須通過new一個實例出來,并且new出來的實例暈有一個內置的參數,這個參數是一個函數,這個參數擁有自己內置的兩個參數,resolve和reject,并且這兩個參數也是兩個函數
var promise = new Promise(function(resolve, reject) { // ... some code if (/* 異步操作成功 */){ resolve(value); } else { reject(error); }.then(function(){}, function(){})
*上面這個就是一個最簡單的promise對象
var a=new Promise(function(resolve,reject){ console.log("A"); resolve(); console.log("B") }).then(function(){ console.log("C") }) //A //B //C var b=new Promise(function(resolve,reject){ var success="success"; var err="err"; reject(err) }).then(function(e){ console.log(e) },function(e){ console.log(e) })//err
then屬于promise的一個方法,then里面的兩個參數屬于promise的狀態達成后所調用的回調函數,當promise狀態為成功時候,調用第一個函數,失敗則調用第二個函數,同時我們可以看出,promise實例在創建后的那一刻,它的實參函數就開始執行,當resolve函數執行后,promise對象的狀態由進行變為了執行成功,同樣,reject函數的執行將promise狀態由進行變為失敗
另外resolve和reject也起到傳遞信息的作用,信息通過他們的參數來傳遞,then方法則可以來接收傳遞的信息
關于Promise的一些屬性方法可以Promise.prototype獲取,注意:Promise首字母一定要大寫
當然then方法可以采用鏈式反應,即當then方法的參數(回調函數)執行后又返回一個promise實例,則后面的then會繼續等待該實例最終的狀態而采取回調
var b = new Promise(function (resolve, reject) { var a = function () { return new Promise(function (resolve, reject) { var c = 1; resolve(c) }) }; reject(a) }).then(function (e) { console.log(e) }, function (e) { var d = e(); return d }).then(function (e) { console.log(e) }, function (e) { console.log(e) })//1
Promise的catch方法是當上面的程序發生錯誤的時候指定所要執行的回調函數,該回調函數有一個參數err,用來儲存捕獲到的錯誤
var a=function(){ return new Promise(function(resolve,reject){ resolve(x+3)//x沒有聲明 }).catch(function(err){ console.log(err) }).then(function(){console.log("success")}, function(){ console.log("err") }) }; a()//輸出 x is not defined var a=function(){ return new Promise(function(resolve,reject){ resolve(x+3) }).then(function(){console.log("success")}, function(){ console.log("err") }) }; a()//輸出err var a=function(){ return new Promise(function(resolve,reject){ reject(x+3) }).then(function(){console.log("success")}, function(){ console.log("err") }) }; a()//輸出err
第一個例子里面當reslove被調用的時候發生錯誤,catch捕捉錯誤并執行回調函數,catch后面的then方法則成為對于catch做出的結果進行回調,由于捕獲錯誤成功,則調用then的第一個回調函數
從2號例子中我們對比可以看出在promise狀態又進行到成功需要resolve函數執行成功才能判定promise狀態成功,resolve函數沒有執行成功,則promise狀態立刻變為reject失敗,并調用then后第二個函數
從3號例子可以看出,promise中的狀態執行失敗都會調用reject
var a=function(){ return new Promise(function(resolve,reject){ console.log(1) }).then(function(){console.log("success")}, function(){ console.log("err") }) }; a() //1
我們從上面例子可以看出沒有給promise指定狀態時候,then方法是不會被激活
var a=function(){ return new Promise(function(resolve,reject){ resolve();reject(); }).then(function(){console.log("success")}, function(){ console.log("err") }) }; a()//success
上面例子我們可以看出一旦有一個狀態被指定就不能在改變。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/112596.html
摘要:首先是一個構造器函數,使用它必須通過一個實例出來,并且出來的實例暈有一個內置的參數,這個參數是一個函數,這個參數擁有自己內置的兩個參數,和,并且這兩個參數也是兩個函數異步操作成功上面這個就是一個最簡單的對象屬于的一個方法,里面的兩個參數屬于 首先promise是一個構造器函數,使用它必須通過new一個實例出來,并且new出來的實例暈有一個內置的參數,這個參數是一個函數,這個參數擁有自己...
摘要:選擇的主要原因大概是因為該框架出現較早,感覺上會相對成熟,日后學習中遇到問題想要查找答案相對簡單一些,對,就是這么簡單。多說無益,接下來開始的學習,我按照我學習中帶著的問題來一一解答,完成我的入門筆記。主要是針對前端的組件化開發。 這兩天得空,特意來折騰了以下時下火熱的前端框架react,至于為什么選react,作為一個初學者react和vue在技術上的優劣我無權評論,也就不妄加評論了...
閱讀 1863·2023-04-26 02:46
閱讀 1995·2021-11-25 09:43
閱讀 1140·2021-09-29 09:35
閱讀 2095·2019-08-30 15:56
閱讀 3419·2019-08-30 15:54
閱讀 2627·2019-08-29 16:35
閱讀 3116·2019-08-29 15:25
閱讀 3282·2019-08-29 14:01