欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          node同步與異步的區(qū)別是什么

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

          node同步與異步的區(qū)別是什么

          本教程操作環(huán)境:windows10系統(tǒng)、nodejs 12.19.0版本、Dell G3電腦。

          node同步與異步的區(qū)別是什么

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

          同步的英文:sync(synchronization)

          異步的英文:async(asynchronous)

          同步API:只有當前API執(zhí)行完成后,才能繼續(xù)執(zhí)行下一個API

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

          異步API:當前API的執(zhí)行不會阻塞后續(xù)代碼的執(zhí)行

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

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

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

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

          回調(diào)函數(shù)

          自己定義函數(shù)讓別人去調(diào)用。

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

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

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

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

          代碼執(zhí)行順序分析

          JavaScript分為同步代碼執(zhí)行區(qū)和異步代碼執(zhí)行區(qū),它們之間有回調(diào)函數(shù)隊列連接。首先,JavaScript會執(zhí)行同步代碼區(qū)的全部內(nèi)容,然后再去異步代碼區(qū)執(zhí)行代碼,查找異步代碼區(qū)執(zhí)行完成的代碼塊,找到就馬上去找到這個異步代碼塊對應(yīng)的回調(diào)函數(shù)放到同步代碼執(zhí)行區(qū)來執(zhí)行

          Node.js中的異步API

          讀取文件API,有回調(diào)函數(shù)。

          事件監(jiān)聽的API,也有回調(diào)函數(shù)。(事件處理函數(shù)就是回調(diào)函數(shù),事件監(jiān)聽API就是異步API)

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

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

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

          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)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號