鍍金池/ 問答/Linux  HTML/ node如何等待異步函數(shù)執(zhí)行完成后再執(zhí)行后續(xù)代碼

node如何等待異步函數(shù)執(zhí)行完成后再執(zhí)行后續(xù)代碼

此問題終結(jié),需求不適合使用node進(jìn)行實(shí)現(xiàn)。

核心代碼如下:

function funcA(callback){
    const pgClient = new Client();
    pgClient.connect();
    pgClient.query("############").then(res=>{
        const result = res;
        pgClient.end();
        callback(result);
    });
}

function funcB(callback){
    let result=null;
    funcA(function(res){
        result= res;
    });
    callback(result);
}

function funcC(){ //此函數(shù)不能使用async
    funcB(function(res){
        a = res;
    });
    console.log(a) // undefined
}

業(yè)務(wù)需求是使用anyproxy對response進(jìn)行處理,如果在anyproxy的beforeSendResponse中使用異步的話則anyproxy不會等待回調(diào),直接將原先的response發(fā)回客戶端了。

anyproxy是支持Promise的,但是我依然沒能實(shí)現(xiàn)在回調(diào)里修改response,都是修改之前就把原response發(fā)回去了。

我需要調(diào)用funcB給a賦值,funcB中需要去PostgreSQL數(shù)據(jù)庫中獲取數(shù)據(jù)(用的pg只能異步),然后回調(diào)回來之后還沒等賦值就給返回個(gè)空的result回去了,很絕望。

回答
編輯回答
傲寒

async await 語法了解一下

2018年5月23日 18:29
編輯回答
鐧簞噯

這個(gè)用promise解決最合適

2018年1月30日 14:46
編輯回答
空白格
function funcB(callback){
    funcA(function(res){
        callback(res);
    });
}

function funcC(){ //此函數(shù)不能使用async
    funcB(function() {
      console.log(a);
    }); 
}

除了回調(diào),別無他法

2018年6月27日 16:06
編輯回答
孤巷
 async.parallel

了解一下

2017年9月9日 09:20