Promise js非同步載入解決方案

2022-07-24 03:09:13 字數 1289 閱讀 8737

範例:

var p = new

promise(function(resolve, reject), 2000);

});

resolve(data);函式的作用,將promise物件的狀態從「未完成」變成「成功」。

reject(data);函式的作用是,在非同步操作失敗時呼叫,並將非同步操作報出的錯誤,作為引數傳遞出去,實際就是將「未完成」狀態變成「失敗」。

範例:

new

promise(function(resolve, reject) );

}).then(function(data) , function(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

Promise解決非同步載入的問題

1.首先的明白什麼是同步,什麼是非同步 同步載入 程式按順序執行,在上乙個程式執行完之前,不會執行其他的程式,叫單執行緒 非同步載入 例如 a程式執行的同時b程式也在執行 問題 我再用vue框架的時候遇到乙個問題,頁面初始化開始就要載入兩個方法,而這兩個方法其中的乙個需要用到另乙個的方法請求到的資料...

同步載入 非同步載入 延遲載入

一 同步載入 平常預設用的都是同步載入。如 同步模式又稱阻塞模式,會阻止瀏覽器的後續處理,停止了後續的檔案的解析,執行,如影象的渲染。流覽器之所以會採用同步模式,是因為載入的js檔案中有對dom的操作,重定向,輸出document等預設行為,所以同步才是最安全的。通常會把要載入的js放到body結束...

資料非同步載入

非同步載入是ado的一種資料載入方式,主要由記錄集的options引數來控制!ado210.chm中的格式 recordset.open source,activeconnection,cursortype,locktype,options options 可選。long 值,指示提供者計算 sou...