我正在尝试拨打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(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)
}
})
})
};
这里是我调用方法的地方:
await order.add(array_data, db, function (err, order_response) {
//logic
}
// 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, db, logger) => {
const extranet = new API_EXTRANET();
return util.promisify(extranet.addOrder)(data);
};
// How to call it
try {
const orders = await order.add(arrayData, db);
} catch (err) {
// Handle the error
}
如果要包装addOrder
返回,可以执行:
// 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, db, logger) => {
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, db);
} catch (err) {
// Handle the error
}