我在執行map(循環)中基於鏈的http請求方法時遇到問題。但它在形式的異步(意味着它執行firstFun然後secondFun),但我希望它以同步方式執行。當第一個樂趣正在調用,然後調用請求方法,並使用對第二樂趣請求的請求響應並調用該方法。如何在node.js的循環(map或_.each)中執行多個http請求方法
這是代碼:
var pipelines = [1, 2, 3, 4];
var auth_token = "xxxxxxxx"
getPipelinesTOTrigger(pipelines , auth_token)
function getPipelinesTOTrigger(pipelines , auth_token, cb) {
pipelines.map(function (pipe) {
firstFun(pipe,function (err, data) {
if (err) {
console.log("err:" + JSON.stringify(err))
} else {daya
console.log("first fun return :" + JSON.stringify(data.status))
secondFun(data, function (err, data1) {
if (err) {
console.log("err:" + err)
} else {
console.log("second fun return "+JSON.stringify(data1.status))
}
})
}
})
})
}
function firstFun(pipe, cb) {
var pipe = { pipe: pipe }
var options = {
method: "GET",
url:"https://abc.myappdemo.us/api/singlePublish/597ebfcfa5a4ea23a233ce93",
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': "*"
},
};
request(options, function (error, response, body) {
if(error){
console.log(error)
}
var jsondata=JSON.parse(body)
return cb(null, jsondata)
})
}
function secondFun(pipe, cb) {
var pipe = { data: pipe.pipe * 2 }
var options = {
method: "GET",
url:"https://abc.myappdemo.us/api/singlePublish/597ebfcfa5a4ea23a233ce93",
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': "*"
},
};
request(options, function (error, response, body) {
if(error){
console.log(error)
}
var jsondata1=JSON.parse(body)
return cb(null, jsondata1)
})
}
我得到這樣的輸出:
first fun return :"Success"
first fun return :"Success"
first fun return :"Success"
first fun return :"Success"
second fun return "Success"
second fun return "Success"
second fun return "Success"
second fun return "Success"
,但我想是這樣的:
first fun return :"Success"
second fun return "Success"
first fun return :"Success"
second fun return "Success"
first fun return :"Success"
second fun return "Success"
first fun return :"Success"
second fun return "Success"
請提前幫我解決這個問題。
請從https://gist.github.com/anvk/5602ec398e4fdc521e2bf9940fd90f84 –
是它執行精細檢查相同的代碼,但是當使用的HTTP請求方法我那麼它是不是執行同步,我想在第二個函數中使用第一個函數響應。請在上面查看我的代碼。 – Mahesh
好的,然後使用藍鳥的Promise.map方法,並調用你的承諾,因爲它將作爲輸入順序返回第一個輸出到第二個輸出 –