国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

ES6的異步終極解決方案分享

2024-05-06 15:37:00
字體:
來源:轉載
供稿:網友

前言

Promise async generator是ES6之后才被提出來的,他們都能夠用來解決以前JS異步調用產生的一系列問題,例如大名鼎鼎的回調地獄!!!

什么是回調地獄?

在以前js中,我們是無法知曉一個異步操作是否執行完成,為了在異步操作完成后執行特定的代碼,我們需要傳入回調函數,請看下面的栗子:

這是一個簡單的例子,在請求完成后(可以理解為異步操作)執行特定的代碼

 //我們需要在請求完成后輸出請求完成,請看回調法 function show(params) { request('這是請求參數', () => { console.log('請求完成') }) } /** * 模擬發起一個http請求 * @param {object} data 請求的參數 * @param {function} callBack 回調函數 */ function request(data, callBack) { //下面的定時器模擬請求時間 setTimeout(data => { callBack(data); }, 3000); } show()

一次回調當然簡單,如果是在這次請求完成后需要立即發起下一次請求呢?例如需要請求request10次,必須在上次請求完成后才能進行下一次請求,來看看 回調地獄 是怎么樣的

 //我們需要在請求完成后輸出請求完成,請看回調法 function show(params) { request('這是請求參數', () => { console.log('請求完成1次') request('這是請求參數', () => { console.log('請求完成2次') request('這是請求參數', () => {  console.log('請求完成3次')  request('這是請求參數', () => {  console.log('請求完成4次')  request('這是請求參數', () => {  console.log('請求完成5次')  //這才第五次.....  })  }) }) }) }) } /** * 模擬發起一個http請求 * @param {object} data 請求的參數 * @param {function} callBack 回調函數 */ function request(data, callBack) { //下面的定時器模擬請求時間 setTimeout(data => { callBack(data); },1000); } show()

這才第5次回調,但是代碼的可讀性已經極差了!

讓我們先看看 Promise async generator怎么解決這個問題,后面再說其使用方式

首先 Promise 篇

 //我們需要在請求完成后輸出請求完成,請看回調法 function show(params) { request('這是請求參數').then( resolve => { console.log('請求完成1次'); return request('這是請求參數') } ).then( resolve => { console.log('請求完成2次'); return request('這是請求參數') } ).then( resolve => { console.log('請求完成3次'); return request('這是請求參數') } ).then( resolve => { console.log('請求完成4次'); return request('這是請求參數') } ).then( resolve => { console.log('請求完成5次'); return request('這是請求參數') } ) } /** * 模擬發起一個http請求 * @param {object} data 請求的參數 * @param {function} callBack 回調函數 */ function request(data) { return new Promise( resolve => { //下面的定時器模擬請求時間 setTimeout(data => {  resolve(data) }, 1000); } ) } show()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 九江市| 清苑县| 海南省| 西盟| 偃师市| 惠安县| 志丹县| 卢氏县| 茂名市| 凯里市| 长沙县| 抚州市| 利川市| 安化县| 临猗县| 永仁县| 漠河县| 安国市| 陆丰市| 西吉县| 杭州市| 阿瓦提县| 枣阳市| 西安市| 新乡市| 鄂州市| 孟津县| 绥中县| 扶沟县| 公安县| 梅河口市| 洪泽县| 健康| 文化| 麻江县| 林西县| 平舆县| 嘉禾县| 嘉祥县| 屯昌县| 行唐县|