php - nodejs 获取两个异步查询的结果
PHP中文网
PHP中文网 2017-04-10 17:57:16
[PHP讨论组]
let $search1 = mysql.query($sql,callback);
let $search2 = mysql.query($sql2,callback2);

let $result = [$search1,$search2];
.......后面处理$result 以及其他逻辑

这种同步的逻辑在nodejs中要怎么实现? 使用的是 异步的mysql库,$result要拿到两个查询的结果

mysql部分:

class mysql {

    query($sql,callback){
    
        return this.conn.query($sql,{},function($result){
            return $result
        });
    }

}

PHP中文网
PHP中文网

认证0级讲师

全部回复(5)
PHP中文网

谢邀。
不需要什么库,只需要升级下高版本的nodejs就行。
举个promise的例子

function queryA() {
  return new Promise((resolve, reject) => {
    mysql.query($sql, (err, results, fields) => {
      if (err) reject(err);
      mysql.query($sql1, (err, results, fields) => {
        if (err) reject(err);
        resolve(results);
      });
    });
  });
}

function queryB() {
  return new Promise((resolve, reject) => {
    mysql.query($sql2, (err, results, fields) => {
      if (err) reject(err);
      mysql.query($sql22, (err, results, fields) => {
        if (err) reject(err);
        resolve(results);
      });
    });
  });
}
var p = Promise.all([queryA, queryB]);

p.then(function([resultsA, resultsB]) {
  // ...
  console.log(resultsA, resultsB);
}).catch(function(err) {
  // ...
});
怪我咯

先去了解下 async 这个异步流程控制的库

针对你这个 case 够了

async.parallel([
    $search1,
    $search2
], function(err, results) {
    // optional callback
});

要深入了解 node 的异步控制的话,还是去系统学一下 node 异步同步的知识吧
异步操作和Async函数

PHPz

我想说,楼上三位都对

天蓬老师

可以用 async/await,大概是这样:

// 需要 babel 支持

const query = async () => {
    let $search1 = await mysql.query($sql);
    let $search2 = await mysql.query($sql2);

    // 回调函数可以拿出来执行了
    callback();
    callbac2k();
    
    // 这里已经拿到所有结果
    let $result = [$search1, $search2];
    
    // ...
}
高洛峰

Async/await 一般和promise结合,可以await Promise.all()两个或多个异步,同时执行,都执行完了,再执行后面代码。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号