最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

关于NodeJS中的嵌套承诺

IT培训 admin 2浏览 0评论

关于NodeJS中的嵌套承诺

[这有很多线程,我正在使用它来寻找以下问题的解决方案。

getMethod() {
  execDBQuery(sqlQuery1)
  .then(productionQueryRows => {
     prodResultFunc(resultSet) // Calling a function to get another set of DB values
     .then (result) {
      console.log(result) // Final result which will be sent to user
     }
  });
}

async function prodResultFunc(prodRowSet) {
 const results = await Promise.all(
    prodRowSet.map( async (objBatchRow) => {

        execDBQuery(sqlQuery2)
        .then(resultSet => {
            read value-1
        })

        execDBQuery(sqlQuery3)
        .then(resultSet => {
            read value-2
        })      

        // Create a object using Value-1 & Value-2 and return object to map
    });
  );
}

我尝试在下面实现(仅使用SQL执行),并且工作正常。

async function prodResultFunc(prodRowSet) {
 const results = await Promise.all(
    prodRowSet.map( async (objBatchRow) => {

        execDBQuery(sqlQuery2)
        .then(resultSet => {
            read values using resultSet
            Create object with resultSet values
        })
        return object
    });
  );
}

但是我想使用两个SQL(2和3)的值来创建对象,而这正是我努力寻找实现语法的地方。现有线程的任何帮助/指针都将是一个很大的帮助。

回答如下:

您可能正在寻找Promise.All

async function prodResultFunc(prodRowSet) {
 const results = await Promise.all(
    prodRowSet.map( async (objBatchRow) => {

          Promise.all([execDBQuery(sqlQuery2), execDBQuery(sqlQuery3)]).then(function(values) {
               //TODO:: Impement you bussiness logic here
                console.log(values);
          });
    });
  );
}

关于NodeJS中的嵌套承诺

[这有很多线程,我正在使用它来寻找以下问题的解决方案。

getMethod() {
  execDBQuery(sqlQuery1)
  .then(productionQueryRows => {
     prodResultFunc(resultSet) // Calling a function to get another set of DB values
     .then (result) {
      console.log(result) // Final result which will be sent to user
     }
  });
}

async function prodResultFunc(prodRowSet) {
 const results = await Promise.all(
    prodRowSet.map( async (objBatchRow) => {

        execDBQuery(sqlQuery2)
        .then(resultSet => {
            read value-1
        })

        execDBQuery(sqlQuery3)
        .then(resultSet => {
            read value-2
        })      

        // Create a object using Value-1 & Value-2 and return object to map
    });
  );
}

我尝试在下面实现(仅使用SQL执行),并且工作正常。

async function prodResultFunc(prodRowSet) {
 const results = await Promise.all(
    prodRowSet.map( async (objBatchRow) => {

        execDBQuery(sqlQuery2)
        .then(resultSet => {
            read values using resultSet
            Create object with resultSet values
        })
        return object
    });
  );
}

但是我想使用两个SQL(2和3)的值来创建对象,而这正是我努力寻找实现语法的地方。现有线程的任何帮助/指针都将是一个很大的帮助。

回答如下:

您可能正在寻找Promise.All

async function prodResultFunc(prodRowSet) {
 const results = await Promise.all(
    prodRowSet.map( async (objBatchRow) => {

          Promise.all([execDBQuery(sqlQuery2), execDBQuery(sqlQuery3)]).then(function(values) {
               //TODO:: Impement you bussiness logic here
                console.log(values);
          });
    });
  );
}

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论