站長資訊網
        最全最豐富的資訊網站

        node同步與異步的區別是什么

        node同步與異步的區別是:同步就是程序自上而下的運行,上一步執行完后下一步才能得到執行;而異步是指不用等待上面的運行完后再運行下面的操作,異步編程可以依托于回調來實現,但并不是回調后的程序就是異步了。

        node同步與異步的區別是什么

        本教程操作環境:windows10系統、nodejs 12.19.0版本、Dell G3電腦。

        node同步與異步的區別是什么

        同步就是程序自上而下運行,而異步就是不用等待上面的運行完后再運行下面的操作。異步編程依托于回調來實現,但不能說使用了回調后程序就異步化了。

        同步的英文:sync(synchronization)

        異步的英文:async(asynchronous)

        同步API:只有當前API執行完成后,才能繼續執行下一個API

        console.log('before');  console.log('after');

        異步API:當前API的執行不會阻塞后續代碼的執行

        console.log('before'); setTimeout(    () => { console.log('last'); }, 2000); console.log('after');

        同步API, 異步API的區別( 獲取返回值 )

        同步API可以從返回值中拿到API執行的結果, 但是異步API是不可以的(好像在異步API里面寫return也是拿不到結果的?)

        // 異步   function getMsg () {        setTimeout(function () {            return { msg: 'Hello Node.js' }       }, 2000);   }   const msg = getMsg (); //函數沒有寫return 默認是返回 undefined cnsole.log(msg); // 輸出的是 undefined,因為定時器還沒執行完就執行了輸出

        回調函數

        自己定義函數讓別人去調用。

        // getData函數定義  function getData (callback) {}   // getData函數調用  getData (() => {}); /*例子------------------*/ function getMsg (callback) {     setTimeout(function () {         callback ({ msg: 'Hello Node.js' })     }, 2000); } getMsg (function (msg) {      console.log(msg); });

        同步API, 異步API的區別(代碼執行順序)

        同步API從上到下依次執行,前面代碼會阻塞后面代碼的執行

        異步API不會等待API執行完成后再向下執行代碼

        代碼執行順序分析

        JavaScript分為同步代碼執行區和異步代碼執行區,它們之間有回調函數隊列連接。首先,JavaScript會執行同步代碼區的全部內容,然后再去異步代碼區執行代碼,查找異步代碼區執行完成的代碼塊,找到就馬上去找到這個異步代碼塊對應的回調函數放到同步代碼執行區來執行

        Node.js中的異步API

        讀取文件API,有回調函數。

        事件監聽的API,也有回調函數。(事件處理函數就是回調函數,事件監聽API就是異步API)

        如果異步API后面代碼的執行依賴當前異步API的執行結果,但實際上后續代碼在執行的時候異步API還沒有返回結果,這個問題要怎么解決呢?

        比如有個需求:依次讀取A文件、B文件、C文件(讀完A再讀B接著讀C,不能同時讀取)

        如果實現上面這個需求就會導致將B讀取的操作放到A的回調函數里面,而讀取C的操作放到B的回調函數里面,導致嵌套層次很多(回調地獄)

        const fs = require('fs'); fs.readFile('./1.txt', 'utf8', (err, result1) => { console.log(result1) fs.readFile('./2.txt', 'utf8', (err, result2) => { console.log(result2) fs.readFile('./3.txt', 'utf8', (err, result3) => { console.log(result3) }) }) });

        推薦學習:《nodejs視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 91精品国产91热久久久久福利 | 亚洲AV成人无码久久精品老人| 国产精品久久久久久| 四虎精品免费永久免费视频| 99久久99久久精品国产片果冻| 精品国偷自产在线| 亚洲国产精品嫩草影院在线观看 | 人妻熟妇乱又伦精品视频| 久久久久九国产精品| 亚洲一区精品中文字幕| 精品视频一区二区三三区四区 | 久久精品无码一区二区日韩AV| 99热成人精品国产免男男| 8AV国产精品爽爽ⅴa在线观看| 一本色道久久88精品综合| 久久精品成人影院| 国产亚洲精品线观看动态图| 色综合久久综精品| 好属妞这里只有精品久久| 国产日韩精品欧美一区喷水| 无码国产精品一区二区免费16| 亚洲精品麻豆av| 欧美日韩国产成人高清视频,欧美日韩在线精品一 | 99精品一区二区三区无码吞精| 狼色精品人妻在线视频| 无码人妻精品中文字幕| 日韩精品亚洲人成在线观看| 亚洲第一极品精品无码久久| 亚洲中文久久精品无码| 亚洲欧洲美洲无码精品VA| 最新国产乱人伦偷精品免费网站| 欧美精品色婷婷五月综合| 欧美国产成人精品一区二区三区 | 精品久久久久久久久久中文字幕 | 久久国产精品无码一区二区三区| 久久亚洲欧美国产精品 | 小辣椒福利视频精品导航| 久久久无码人妻精品无码| 精品调教CHINESEGAY| 国产精品揄拍100视频| 99精品视频在线观看re|