第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何避免在Node.js中長(zhǎng)時(shí)間嵌套異步函數(shù)

如何避免在Node.js中長(zhǎng)時(shí)間嵌套異步函數(shù)

楊魅力 2019-08-26 09:39:58
如何避免在Node.js中長(zhǎng)時(shí)間嵌套異步函數(shù)我想創(chuàng)建一個(gè)顯示來(lái)自數(shù)據(jù)庫(kù)的一些數(shù)據(jù)的頁(yè)面,所以我創(chuàng)建了一些從我的數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)的函數(shù)。我只是Node.js中的新手,所以據(jù)我所知,如果我想在一個(gè)頁(yè)面中使用所有這些(HTTP響應(yīng)),我必須將它們?nèi)壳短祝篽ttp.createServer(function (req, res) {   res.writeHead(200, {'Content-Type': 'text/html'});   var html = "<h1>Demo page</h1>";   getSomeDate(client, function(someData) {     html += "<p>"+ someData +"</p>";     getSomeOtherDate(client, function(someOtherData) {       html += "<p>"+ someOtherData +"</p>";       getMoreData(client, function(moreData) {         html += "<p>"+ moreData +"</p>";         res.write(html);         res.end();       });     });   });如果有很多這樣的函數(shù),那么嵌套就成了問(wèn)題。有辦法避免這種情況嗎?我想這與你如何組合多個(gè)異步函數(shù)有關(guān),這似乎是一個(gè)基本的東西。
查看完整描述

3 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

有趣的觀察。請(qǐng)注意,在JavaScript中,您通??梢允褂妹瘮?shù)變量替換內(nèi)聯(lián)匿名回調(diào)函數(shù)。

下列:

http.createServer(function (req, res) {
   // inline callback function ...

   getSomeData(client, function (someData) {
      // another inline callback function ...

      getMoreData(client, function(moreData) {
         // one more inline callback function ...
      });
   });

   // etc ...});

可以重寫看起來(lái)像這樣:

var moreDataParser = function (moreData) {
   // date parsing logic};var someDataParser = function (someData) {
   // some data parsing logic

   getMoreData(client, moreDataParser);};var createServerCallback = function (req, res) {
   // create server logic

   getSomeData(client, someDataParser);

   // etc ...};http.createServer(createServerCallback);

但是,除非您計(jì)劃在其他位置重用回調(diào)邏輯,否則通常更容易讀取內(nèi)聯(lián)匿名函數(shù),如您的示例所示。它還可以讓您不必為所有回調(diào)找到一個(gè)名稱。

另外請(qǐng)注意,正如@pst在下面的注釋中所指出的,如果您正在訪問(wèn)內(nèi)部函數(shù)中的閉包變量,則上述內(nèi)容不是簡(jiǎn)單的翻譯。在這種情況下,使用內(nèi)聯(lián)匿名函數(shù)更為可取。


查看完整回答
反對(duì) 回復(fù) 2019-08-26
  • 3 回答
  • 0 關(guān)注
  • 719 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)