我必须依次进行多个REST API Post调用。 (第一个REST api的输出,第一个api的处理将输入到下一个)。
如何在返回之前完成NodeJS中的request.post()调用?我认为request.post()是异步的,我需要使其同步。我尝试使用回调,但是没有用。
function abc(ip, op) {
let options = {
url: 'http://localhost:123/s',
form: {
ipath: ip,
opath: op
}
};
request.post(options);
}
REST API调用
app.post('/s', (req,res)=>{
gm(img_path).implode(-1.2).write(op_path, function(err) {
if (err)
console.log(err);
})
});
答案 0 :(得分:1)
您无法同步执行此操作,但是您可以将其包装在Promise
中或使用request-promise,然后使用 async / < strong> await ,以在调用其他函数之前等待abc
的结果。
const request = require('request-promise');
function abc(ip, op) {
let options = {
url: 'http://localhost:123/s',
form: {
ipath: ip,
opath: op
}
};
// This returns a promise when using request-promise
return request.post(options);
}
async function myFunction() {
const ip = ''; // Whatever ip / op are
const op = '';
const abcRes = await abc(ip, op);
// This won't run until `abc` finishes
const otherCallRes = await otherCall(abcRes);
// Do something else with otherCallRes
return otherCallRes;
}
myFunction()
.then(console.log)
.catch(console.error);