學習熟知吧,原理仍是繼續吧promise
例子1: var isGeted; function getRet(){ return new Promise(function(resolve, reject) { //一些異步操做 if(isGeted){ resolve("yYYYYYYY") } else{ reject("NNNNNNNNNNNNNNNNNN") } }); } isGeted=true; getRet().then(function(data){ console.log("返回數據:"+data) }); isGeted=false; getRet().then(function(data){ console.log("返回數據:"+data) }).catch(function(err){ console.log("錯誤:"+err) }); 例子2: Promise原理探究: var promise1 = new Promise(function(resolve, reject) { //某個異步方法 setTimeout(function() { resolve('foo'); }, 300); }); promise1.then(function(value) { console.log(value); }); console.log(promise1); //返回:promise對象,狀態是pending "foo" console.log(promise1); //返回:promise對象,狀態是resolved promise像一個代理,異步方法不知道執行結果,promise預約好,成功執行某方法,失敗執行某方法,讓異步方法按照成功與失敗的設定路線去執行。 又像是個狀態管理工具,狀態只有三種:resolved,rejected,pending pending---->resolved pending---->rejected promise1.then(function(value) { console.log(value); }).catch(function(err){ }); then其實接受兩個函數參數,以下: promise1.then(function(value) { console.log(value); },function(err){ console.log(err); }) 一個是resolve函數,一個是reject函數。 new Promise後就會被執行一次,因此通常外面包成一個函數,如: var funOne = function(){ return new Promise(function(resolve,reject){ }) } funOne.then().then().catch().finally().race().all()等等。
略。異步