Node.js 如何向第三方服务器发出承诺呼叫?
我正在尝试调用extranet,它应该会返回一个参数,但api并没有等待它Node.js 如何向第三方服务器发出承诺呼叫?,node.js,extranet,Node.js,Extranet,我正在尝试调用extranet,它应该会返回一个参数,但api并没有等待它 Orders.prototype.add = function (data, db, callback, logger) { var extranet = new API_EXTRANET(); extranet.addOrder(data, function(err, orders) { if (!err) { if(callback) callback(fals
Orders.prototype.add = function (data, db, callback, logger) {
var extranet = new API_EXTRANET();
extranet.addOrder(data, function(err, orders) {
if (!err) {
if(callback) callback(false, orders);
}else{
if(callback) callback(err, false);
}
}, logger);
};
我试图回报我的承诺,但什么也没发生
Orders.prototype.add = function (data, db, callback, logger) {
var extranet = new API_EXTRANET();
return new Promise((resolve, reject) => {
extranet.addOrder(data, function(err, orders) {
if (err){
reject(err)
} else {
resolve(orders)
}
})
})
};
下面是我调用该方法的地方:
order.addStoreOrder(order_data_update, db).then((response) => {
order.add(array_data, db, function (err, order_response) {
您正在混合处理异步调用的不同方法:回调和承诺。你应该只遵守诺言
// There is no need for callback here, the promise replace your callback
// Because you use of await I guess you should use it here as well
Orders.prototype.add = async (data) => {
const extranet = new API_EXTRANET();
return util.promisify(extranet.addOrder)(data);
};
// How to call it
try {
const orders = await order.add(arrayData);
} catch (err) {
// Handle the error
}
如果要包装
addOrder
退货,可以执行以下操作:
Orders.prototype.add = async(data) => {
const extranet = new API_EXTRANET();
try {
const orders = await util.promisify(extranet.addOrder)(data);
console.log(orders);
return orders;
} catch (err) {
console.error(err);
throw new Error('custom error');
}
};
// How to call it
try {
const orders = await order.add(arrayData);
} catch (err) {
// Handle the error
}
文档:
说明:它将使用回调的函数转换为承诺函数如何调用该方法?(您需要在那里等待结果。)wait order.add(array_data,db,function(err,order_response){//logic}它不接受等待@RolandStarke@josh您没有传递logger来添加函数?@SanketPhansekar情况并非如此,它仍然没有等待参数order.addStoreOrder(order\u data\u update,db)。然后((响应)=>{order.add(array_data,db,function(err,order_response){这里是我调用它的地方,直到它不好,也不像我向您展示的那样。您仍然混淆了回调和承诺