我有个问题。我正在进行数据库调用以从数据库中的订单收集ID,然后我想使用Promise返回该订单的ID,因为数据库调用是异步的。我作出以下承诺:
function getNextOrderId() {
return new Promise(function(resolve, reject) {
orderIdSelected = 0;
var sql = `
SELECT *
FROM Orders
WHERE userId=5
`;
conn.query(sql, function(err, rows, fields) {
if (err) throw err;
var length1 = Object.keys(rows).length;
LogToConsole("length1="+length1);
i1 = 0
while (i1 < length1 && orderIdSelected == 0) {
var OrderId = rows[i1].Id;
LogToConsole("OrderId="+OrderId);
if (OrderId == 1134881) {
orderIdSelected = OrderId;
LogToConsole("orderIdSelected end="+orderIdSelected);
resolve(toString(orderIdSelected));
}
i1++;
}
});
});
}
然后,我将这样的诺言称为:
getNextOrderId().then(function(nextOrderId) {
LogToConsole(nextOrderId);
}).catch((err) => setImmediate(() => { throw err; }));
但是nextOrderId是[Object Undefined]
,在返回之前,它在promise函数中具有值。打印:LogToConsole("orderIdSelected end="+orderIdSelected);
提供:orderIdSelected end=1134881
....出了什么问题,我该如何解决?
toString(1134881)
给 "[object Undefined]"
公正resolve(orderIdSelected);
或resolve(orderIdSelected.toString());
在这里更多细节toString
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句