<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關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript 異步調用

        來源:懂視網 責編:小采 時間:2020-11-27 22:27:12
        文檔

        JavaScript 異步調用

        JavaScript 異步調用:問題 可修改下面的 aa() 函數,目的是在一抄后用 console.log() 輸出 want-value function aa() { setTimeout(function() { return want-value; }, 1000); } 但是,有額外要求: aa() 函數可以隨意修改,但是不能有 console.lo
        推薦度:
        導讀JavaScript 異步調用:問題 可修改下面的 aa() 函數,目的是在一抄后用 console.log() 輸出 want-value function aa() { setTimeout(function() { return want-value; }, 1000); } 但是,有額外要求: aa() 函數可以隨意修改,但是不能有 console.lo

        問題

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

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

        但是,有額外要求:

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

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

        解答

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

        setTimeout() 經常用來模擬異步操作。最早,異步是通過回調來通知(調用)處理程序處理結果的

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

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

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

        就這個例子來說,它和前面回調的例子大同小異。不過它會引出目前更推薦的一種方法——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 方法中的定義是一樣的,但是在調用的時候,使用了 await ,異步等待,等待到異步的結果之后,再使用 console.log() 對其進行處理。

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

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

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

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

        總結

        以上所述是小編給大家介紹的JavaScript 異步調用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

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

        文檔

        JavaScript 異步調用

        JavaScript 異步調用:問題 可修改下面的 aa() 函數,目的是在一抄后用 console.log() 輸出 want-value function aa() { setTimeout(function() { return want-value; }, 1000); } 但是,有額外要求: aa() 函數可以隨意修改,但是不能有 console.lo
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久久亚洲av无码专区导航 | 亚洲a视频在线观看| 99视频免费在线观看| 亚洲国产美女精品久久久| 67194成是人免费无码| 亚洲熟妇AV一区二区三区宅男 | 在线a亚洲v天堂网2018| 亚洲人成电影亚洲人成9999网| a级片免费在线观看| 亚洲免费精彩视频在线观看| 久久午夜夜伦鲁鲁片免费无码 | 国产美女视频免费观看的网站| 日本黄网站动漫视频免费| 亚洲美女视频网址| 114一级毛片免费| 亚洲成AV人片在WWW| 亚洲视频在线免费| 综合偷自拍亚洲乱中文字幕| 国产gav成人免费播放视频| 高清免费久久午夜精品| 亚洲av无码潮喷在线观看| 波多野结衣中文字幕免费视频 | 最近2019免费中文字幕6| 亚洲AV无码乱码在线观看富二代 | 羞羞视频免费网站含羞草| 国产a v无码专区亚洲av| 日本免费在线观看| 亚洲AV成人无码天堂| 国产人妖ts在线观看免费视频| 两个人日本免费完整版在线观看1| 波多野结衣免费视频观看| 久久精品免费一区二区三区| 亚洲午夜精品在线| 亚洲福利中文字幕在线网址| 在线成人爽a毛片免费软件| 爱情岛论坛亚洲品质自拍视频网站| 亚洲国产精品无码中文字| 免费无码又爽又刺激高潮 | 可以免费看黄的网站| 新最免费影视大全在线播放| 久久精品国产亚洲AV电影|