關於ES6的promise和ES7的yield

2022-09-20 06:24:09 字數 2784 閱讀 8118

關於es6的promise和es7的yield

1.promise

2 如何創造乙個promise

如何建立乙個promise(直接執行)

const promise = new promise((resolve,reject) => else

)注意:對於promose物件 如果直接使用new的話則會直接執行,想要定義則使用函式來定義這麼乙個非同步操作

方法2(非同步操作不會立刻執行)

resolve和reject與then是什麼關係

比如我們在resolve函式中定義的

function runasync(), 2000);

});return p;

}runasync()

非同步執行完runasync後,如果再用

runasync().then(res=>)

此時就會列印出 '隨便什麼資料'

非同步操作的reject和resolve在then中的**體現

function runasync()else

}, 2000);

});return p;

};runasync().then(function(data),function(data) );

最後如果這個數字大於5 則會列印出

promise {}39787b1918052d26d1c92ea7ecfacad86e8dbfa2

vm296:19 reject

vm296:20 數字太大了!

3 promise.all

var p1 = new promise((resolve, reject) => );

var p2 = new promise((resolve, reject) => );

var p3 = new promise((resolve, reject) => );

var p4 = new promise((resolve, reject) => );

var p5 = new promise((resolve, reject) => );

promise.all([p1, p2, p3, p4, p5]).then(values => , reason => );

promise {}

vm412:18 (5) ["one", "two", "three", "p4 reject!", "p5 resolve!"]

引數中任意乙個promise返回失敗時,那麼整體立即返回失敗,返回的錯誤資訊是第乙個失敗的promise結果。

var p1 = new promise((resolve, reject) => );

var p2 = new promise((resolve, reject) => );

var p3 = new promise((resolve, reject) => );

var p4 = new promise((resolve, reject) => );

var p5 = new promise((resolve, reject) => );

promise.all([p1, p2, p3, p4, p5]).then(values => , reason => );

vm425:20 p4 reject!

4 promise.racerace有賽跑之譯,因此返回的新例項狀態,是跟隨引數中最先改變狀態的那個例項;如果不是promise例項,依舊先用promise.resolve方法,轉化後再進一步處理。

如果傳的迭代為空,則返回的 promise 永遠等待

var p1 = new promise((resolve, reject) => );

var p2 = new promise((resolve, reject) => );

var p3 = new promise((resolve, reject) => );

promise.race([p1, p2, p3]).then(values => , reason => );

promise {}

vm446:12 one

2.async和await

ES6關於promise技巧

1.推向promise物件推向 不同的狀態 const pro newpromise resolve,reject 2.原型成員 例項成員 註冊乙個後續處理函式,當promise為resolved狀態是執行該函式,當promise為rejected狀態是執行該函式的第二個引數 catch 註冊乙個後...

ES6關於Promise的用法

含義 promise 物件用於乙個非同步操作的最終完成 或失敗 及其結果值的表示。簡單點說,它就是用於處理非同步操作的,非同步處理成功了就執行成功的操作,非同步處理失敗了就捕獲錯誤或者停止後續操作。new promise executor function resolve,reject else 我...

使用ES6模擬Promise

const promise newstatus param newvalue param queue 執行的作業佇列 changestatus newstatus,newvalue,queue this promisestatus newstatus this promivevalue newval...