範例:
var p = newpromise(function(resolve, reject), 2000);
});
resolve(data);
函式的作用,將promise物件的狀態從「未完成」變成「成功」。
reject(data);
函式的作用是,在非同步操作失敗時呼叫,並將非同步操作報出的錯誤,作為引數傳遞出去,實際就是將「未完成」狀態變成「失敗」。
範例:
newthen(function(data){});當接收到「成功訊息時執行內部function;promise(function(resolve, reject) );
}).then(function(data) , function(err) )
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...