es6 --- 异步迭代生成器 Promise
生活随笔
收集整理的這篇文章主要介紹了
es6 --- 异步迭代生成器 Promise
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看一個經典ajax回調的例子:
function foo(x, y, cb) {ajax("http://some.url.1/?x=" + x + "&y=" + y,cb); }foo(11, 31, function(err, text) {if(err) {console.error(err);}else {console.log(text);} });// 異步請求some.url.1參數為x =11, y=31的數據. // 請求 成功/失敗 將數據打印到控制臺下面介紹一個異步迭代生成器…一開始可能會有點怪…但是它引用方便、有很大的擴展空間
// 我們想調用的時候(向調用同步函數那樣)順序調用. // 它可能會報錯,于是丟到try...catch塊中 function *main(){ try{var text = yield foo(11, 31);console.log(text);}catch(err){console.error(err);} } // 下面定義foo函數 function foo(x, y) {ajax("http://some.url.1/?x=" + x + "&y=" + y,function(err, data) {if(err) {it.throw(err);}else{it.next(data);}}); } // foo函數,請求數據,若出錯,將信息拋出,若成功則調用next(data)// 啟動 var it = main(); it.next();Promise實現上面的方法:
function foo(x, y) {return request("http://some.url.1/?x=" + x + "&y=" + y); } foo(11, 31) .then(function(text) {cosnole.log(text);},function(err) {console.error(err);} );把支持Promise的foo和生成器*main()放在一起:
function foo(x, y) {return request("http://some.url.1/?x=" + x + "&y=" + y); }function *mian(){try{var text = yield foo(11, 31);console.log(text);}catch(err){console.err(err);} } // 調用 var it = main();var p = it.next().value;p.then(function(text) {it.next(text);},function(err){it.throw(err);} );參考《你不知道的JavaScript》(中卷)P250
總結
以上是生活随笔為你收集整理的es6 --- 异步迭代生成器 Promise的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php科学计数法转string,php如
- 下一篇: world文档粘贴图片进去看不到