日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

es6 --- 异步迭代生成器 Promise

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。