我的節點服務器需要與其他服務器連接以獲取一些信息並將其發送給用戶。由於在這種情況下請求是異步的,我通常使用附加庫,如request-promise。但是在這裏我有很多來自多個點的呼叫,所以我創建了一個函數來處理它們,這個解決方案不起作用。節點js使用來自其他功能的請求的承諾
apiCall1: function(req,res){
var info = fetchFromOtherServer();
console.log(info); // undefined
res.send(info)
}
apiCall2: function(req,res){
var info = fetchFromOtherServer();
console.log(info); // undefined
res.send(info)
}
function fetchFromOtherServer(){
var options = {"method":"POST", "headers":{...},"uri":"{...}"}
request(options, function(err,response,body){
if(!err && response.statusCode == 200){
console.log(body) // here is a body from other server
return body;
}
}
}
首先,我得到一個API調用的功能apiCall()調用該函數fetchFromOtherServer。但是在請求完成之前,node標記info變量爲undefined並將其發送給用戶。如何更改我的代碼以告訴節點等待,直到我從其他服務器收到響應爲止?
現在終端發送給我一個錯誤「await」短語。我如何將ES6包含到我的節點項目中?在package.json中做些什麼? – ampher911
如果您不使用'babel'或'typescript',那麼您需要'節點7.x'來支持本地'async'。 – nilobarp