<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        關(guān)于JavaScript異步調(diào)用方法

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 20:11:44
        文檔

        關(guān)于JavaScript異步調(diào)用方法

        關(guān)于JavaScript異步調(diào)用方法:問題可修改下面的 aa() 函數(shù),目的是在一秒后用 console.log() 輸出 want-valuefunction aa() { setTimeout(function() { return "want-value"; }, 1000); }但是,有額外要求:aa() 函數(shù)可以隨意修改,但是不能有 conso
        推薦度:
        導讀關(guān)于JavaScript異步調(diào)用方法:問題可修改下面的 aa() 函數(shù),目的是在一秒后用 console.log() 輸出 want-valuefunction aa() { setTimeout(function() { return "want-value"; }, 1000); }但是,有額外要求:aa() 函數(shù)可以隨意修改,但是不能有 conso

        問題

        可修改下面的 aa() 函數(shù),目的是在一秒后用 console.log() 輸出 want-value

        function aa() {
         setTimeout(function() {
         return "want-value";
         }, 1000);
        }

        但是,有額外要求:

        1. aa() 函數(shù)可以隨意修改,但是不能有 console.log()

        2. 執(zhí)行 console.log() 語句里不能有 setTimeout 包裹

        解答

        也許這是個面試題,管它呢。問題的主要目的是考察對異步調(diào)用執(zhí)行結(jié)果的處理,既然是異步調(diào)用,那么不可能同步等待異步結(jié)果,結(jié)果一定是異步的

        setTimeout() 經(jīng)常用來模擬異步操作。最早,異步是通過回調(diào)來通知(調(diào)用)處理程序處理結(jié)果的

        function aa(callback) {
         setTimeout(function() {
         if (typeof callback === "function") {
         callback("want-value");
         }
         }, 1000);
        }
        
        aa(function(v) {
         console.log(v);
        });

        不過回調(diào)在用于稍大型一點的異步應(yīng)用時,容易出現(xiàn)多層嵌套,所以之后提出了一些對其進行“扁平”化,這一部分可以參考閑談異步調(diào)用“扁平”化。當然 Promise 是非常流行的一種方法,并最終被 ES6 采納。用 Promise 實現(xiàn)如下:

        function aa() {
         return new Promise(resolve => {
         setTimeout(function() {
         resolve("want-value");
         }, 1000);
         });
        }
        
        aa().then(v => console.log(v));

        就這個例子來說,它和前面回調(diào)的例子大同小異。不過它會引出目前更推薦的一種方法——async/await,從 ES2017 開始支持:

        function aa() {
         return new Promise(resolve => {
         setTimeout(function() {
         resolve("want-value");
         }, 1000);
         });
        }
        
        async function main() {
         const v = await aa();
         console.log(v);
        }
        
        main();

        aa() 的定義與 Promise 方法中的定義是一樣的,但是在調(diào)用的時候,使用了 await,異步等待,等待到異步的結(jié)果之后,再使用 console.log() 對其進行處理。

        這里需要注意的是 await 只能在 async 方法中使用,所以為了使用 await 必須定義一個 async 的 main 方法,并在全局作用域中調(diào)用。由于 main 方法是異步的(申明為 async),所以如果 main() 調(diào)用之后還有其它語句,比如 console.log("hello"),那么這一句話會先執(zhí)行。

        async/await 語法讓異步調(diào)用寫起來像寫同步代碼,在編寫代碼的時候,可以避免邏輯跳躍,寫起來會更輕松。(參考:從地獄到天堂,Node 回調(diào)向 async/await 轉(zhuǎn)變)

        當然,定義 main() 再調(diào)用 main() 這部分可以用 IIFE 封裝一下,

        (async () => {
         const v = await aa();
         console.log(v);
        })();

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        關(guān)于JavaScript異步調(diào)用方法

        關(guān)于JavaScript異步調(diào)用方法:問題可修改下面的 aa() 函數(shù),目的是在一秒后用 console.log() 輸出 want-valuefunction aa() { setTimeout(function() { return "want-value"; }, 1000); }但是,有額外要求:aa() 函數(shù)可以隨意修改,但是不能有 conso
        推薦度:
        標簽: 方法 js 方式
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成年女人免费视频播放77777| 97视频免费在线| 亚洲伊人久久精品| a毛片全部免费播放| 免费高清在线爱做视频| 亚洲综合丁香婷婷六月香| 青娱乐在线视频免费观看| 日韩黄色免费观看| 色网站在线免费观看| 中文字幕在线免费播放| 久久久久久久久无码精品亚洲日韩| 自拍偷自拍亚洲精品被多人伦好爽| 131美女爱做免费毛片| 香蕉蕉亚亚洲aav综合| 一区二区免费视频| 亚洲啪啪综合AV一区| 日本免费高清视频| 亚洲欧洲一区二区| 久久久久久国产a免费观看黄色大片| 亚欧免费视频一区二区三区 | 野花高清在线观看免费完整版中文| 免费欧洲毛片A级视频无风险| 香蕉视频在线观看亚洲| 免费不卡视频一卡二卡| 亚洲人成网站看在线播放| 日本人护士免费xxxx视频| 一区二区三区精品高清视频免费在线播放 | 99re6免费视频| 亚洲第一男人天堂| 亚洲а∨天堂久久精品| 免费国产在线视频| 亚洲精品天堂成人片AV在线播放| www亚洲精品久久久乳| 久久亚洲国产成人影院网站| WWW亚洲色大成网络.COM| 亚洲精品无码mv在线观看网站 | 亚洲色无码一区二区三区| 四虎影视在线影院在线观看免费视频 | 国产精品免费看久久久无码| 亚洲一区二区三区国产精品无码| 亚洲国产精品自在自线观看|