【发布时间】:2016-11-25 03:59:03
【问题描述】:
如何在 node.js 中使用 ES6 原生 Promise 调用查询。下面是代码。
let arr= [];
conn.query('select * from table1', (err, b) => {
for (let i = 0; i < b.length; i++) {
console.log(b[i]["id"])
let promiseGetData = new Promise((resolve, reject) => {
conn.query('select * from table2 where id = ?', [b[i]["id"]], (err, ce) => {
if (err) {
const response = {
statusCode: 500,
body: JSON.stringify({
message: err
}),
}
reject(response);
} else {
if (ce.length != 0) {
resolve(ce);
}
}
});
});
promiseGetData .then((data) => {
b[i]['data'] = data;
arr.push(b[i])
}).catch((err) => {
console.log(err);
});
}
console.log(b)
})
我在执行 console.log(b) 时看到一个空响应。我不知道我是否以正确的方式使用了诺言,我认为对于第一个查询,我也应该在诺言中执行。非常感谢任何帮助
【问题讨论】:
-
你考虑过ce.length == 0且没有错误的情况吗?
-
@GrantPark 是的,我已经检查过没有错误,实际上我已经在第二次查询之前放置了 console.log,我可以看到日志但之后看不到查询数据,但我仍然会加倍用 case ce.length == 0 再次检查
-
在这种情况下,还要在第二个查询中放置一个 console.log 并查看它是否运行。
标签: javascript node.js promise es6-promise