Promise-js异步加载解决方案
范例:
var p = new Promise(function(resolve, reject){//做一些異步操作 setTimeout(function(){console.log('執行完成');resolve('隨便什么數據');}, 2000); });resolve(data);函數的作用,將Promise對象的狀態從“未完成”變成“成功”。
reject(data);函數的作用是,在異步操作失敗時調用,并將異步操作報出的錯誤,作為參數傳遞出去,實際就是將“未完成”狀態變成“失敗”。
范例:
new Promise(function(resolve, reject) {setTimeout(function() {console.log("setTimeout", 2000);// resolve("執行完成");reject("執行出錯");});}).then(function(data) {console.log(data);}, function(err) {console.log("錯誤", err);})then(function(data){});當接收到“成功消息時執行內部function;
then(function(data){},function(err){});當接收到“成功”消息時執行第一個function,當接收到“失敗”消息時執行第二個function。
catch(reject);當出現“錯誤”時會一直往后續then傳遞,直到被catch捕獲。
注:每個then或catch都會生成新的promise實例,因此在每個then或catch中均需要發出resolve或reject消息,否則后續then或catch無法執行。
Promise.all()
var p = Promise.all([p1, p2, p3]);all()接受數組作為參數。p1,p2,p3都是Promise的實例對象,p要變成Resolved狀態需要p1,p2,p3狀態都是Resolved,如果p1,p2,p3至少有一個狀態是Rejected,p的狀態就變成Rejected。
Promise.race()
var p = new Promise( [p1,p2,p3] )只要p1、p2、p3之中有一個實例率先改變狀態,p的狀態就跟著改變。那個率先改變的 Promise 實例的返回值,就傳遞給p的回調函數。只獲取最新發生狀態變化的實例,后續丟棄。
Proise.resolve()、Promise.reject()將現有對象轉化為Promise對象,并將狀態直接置為resolve或reject。范例:
Promise.resolve('foo');//狀態為resolve Promise.reject('foo');//狀態為reject?
轉載于:https://www.cnblogs.com/swordyt/p/8342132.html
總結
以上是生活随笔為你收集整理的Promise-js异步加载解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习算法①
- 下一篇: 阿里云云客服平台正式商业化