【发布时间】:2018-09-19 15:54:56
【问题描述】:
我有嵌套的回调导致问题。我想改变承诺,但我不确定该怎么做。
我首先得到一个输出数组
require('abcd').open(cnnectionString, function(er, conn) {
// I get list back from following query
conn.query('select first 10 name, phone from........', function(err, result) {
if(err) {
} else {
// for each name and phone I call another query
for(i = 0; i <= result.length; i++) {
conn.query('select address from......where name=result[i].name',
function(error, result1) {
// I call third query based on data from second query
conn.query('select acct from .......where ', function(err, result2) {
console.log(result2)
})
})
})
})
使用这种方法,由于异步,我会得到各种不好的结果。请让我知道如何将其更改为承诺。
【问题讨论】:
-
第一步。将 Promise 接口用于您的数据库,找到它的使用示例并开始使用它而不是回调接口。您需要阅读一些文档和一些教程才能做到这一点。对于循环中的多个异步操作,了解如何使用
Promise.all()跟踪多个异步操作。 -
我希望这个视频能对你有所帮助youtube.com/watch?v=2d7s3spWAzo&t=4s
-
您应该首先将三个嵌套查询变成一个查询:利用数据库的强大功能一次性生成这些结果。
标签: javascript node.js callback promise