获取node异步执行结果的方式

拿数据库操作举例:

  var connection = mysql.createConnection();

  connection.query(sql,function(err,rows){xxx} );

如果写成:

var rows = connection.query(sql,function(err,rows){xxx} );   //connection.query()不返回值,最后打印出undefined

console.log(rows);

或者

var res;

connection.query(sql,function(err,rows){  res = rows; } );

console.log(res);        //connection.query()是异步执行的,其还未执行完就执行此句打印语句打印出undefined;



解决方法:

  function query(callback){

    connection.query(sql,function(err,rows){

      if(err)

        console.log(err);  return;

      callback(rows);

    }

  function callback(rows){

    console.log(rows)

  }

这也是node.js 获取异步执行结果的最常用方式,通过给异步函数一个函数参数来处理异步执行结果



  

    

原文地址:https://www.cnblogs.com/wyr-blog/p/9459573.html

时间: 2024-10-28 20:24:26

获取node异步执行结果的方式的相关文章

FutureTask是怎样获取到异步执行结果的?

所谓异步任务,就是不在当前线程中进行执行,而是另外起一个线程让其执行.那么当前线程如果想拿到其执行结果,该怎么办呢? 如果我们使用一个公共变量作为结果容器,两个线程共用这个值,那么应该是可以拿到结果的,但是这样一来,对业务就会造成侵入干扰了,因为你始终得考虑将这个共享变量传入到这个异步线程中去且要维持其安全性. 我们知道,Future.get() 可以获取异步执行的结果,那么它是怎么做到的呢? 要实现线程的数据交换,我们按照进程间的通信方式可知有: 管道.共享内存.Socket套接字.而同一个j

node js 异步执行流程控制模块Async介绍

1.Async介绍 sync是一个流程控制工具包,提供了直接而强大的异步功能.基于Javascript为Node.js设计,同时也可以直接在浏览器中使用. Async提供了大约20个函数,包括常用的 map, reduce, filter, forEach 等,异步流程控制模式包括,串行(series),并行(parallel),瀑布(waterfall)等. 项目地址:https://github.com/caolan/async 2. Async安装 npm install async 3.

Delphi中ADO异步执行方式

当ADO开始处理数据后,应用程序必须等到ADO处理完毕之后才可以继续执行.但是除了同步执行方式之外,ADO也提供了异步执行的方式,允许当ADO处理时,应用程序仍然能够先继续执行.而当ADO处理数据完毕之后,ADO会以事件的方式通知应用程序,此时应用程序可以再根据ADO执行的结果来采取相应的动作.使用异步执行方式有许多用途,例如,如果应用程序需要处理花费大量时间的动作,那么ADO可以选择以异步执行方式让ADO在后台执行,而让应用程序继续处理图形用户接口或用户输入的数据.在ADO中使用异步执行方式非

jQuery异步获取json数据的2种方式

jQuery异步获取json数据有2种方式,一个是$.getJSON方法,一个是$.ajax方法.本篇体验使用这2种方式异步获取json数据,然后追加到页面. 在根目录下创建data.json文件: { "one" : "Hello", "two" : "World" } ■ 通过$.getJSON方法获取json数据 <script src="Scripts/jquery-2.1.1.min.js"

node 异步编程

node 异步编程 我了解到的node异步编程可分成: 1.回调函数 2.pub/sub模式(发布/订阅模式) 3.promise 4.generator 5.async await 一.直接回调函数 该方法是最直接常用的异步操作方式,比如在setInterval 和 ajax等会使用到, 存在缺点有: 1.代码不易阅读并且容易出现金字塔嵌套问题; 2.一般只能对应一个回调函数(一对一),使用上有一定的限制; fs.readFile('/etc/passwd', function (err, d

聊聊高并发(四十一)解析java.util.concurrent各个组件(十七) 任务的异步执行和状态控制

聊聊高并发(三十九)解析java.util.concurrent各个组件(十五) 理解ExecutorService接口的设计这篇说了ExecutorService接口扩展了Executor接口,在执行任务的基础上,提供了执行框架生命周期的管理,任务的异步执行,批量任务的执行的能力.AbstractExecutorService抽象类实现了ExecutorService接口,提供了任务异步执行和批量执行的默认实现.这篇说说任务的异步执行和状态控制 说明一点,使用Executor框架执行任务的方式

Celery框架实现异步执行任务

Celery 官方 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/ Celery架构 Celery的架构由三部分组成,消息中间件(message broker).任务执行单元(worker)和 任务执行结果存储(task result

celery异步执行任务框架

Celery 官方 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/ Celery异步任务框架 """ 1)可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket) 2)celery服务为为其他项目服务提

Windows 商店应用程序异步执行task和调整task优先级

在制作WP8.1手电筒的时候遇到一个问题,手电筒有时候能够点亮有时候点不亮. 在MSDN论坛上面有人告诉我可能是优先级的问题示意叫我使用CoreDispatcher 将task任务提高权限,但是发现还是不行. 后来发现点亮闪关灯需要在UI线程中触发,不能再异步中实现,感觉和画图有点类似不能在非主线程中绘制图片. 下面我就分享怎么利用CoreDispatcher改变task任务的优先级(不过还没有验证,因为我还没有遇到需要改变优先级的task,但是依据Windows运行时API的说明应该是正确的改