跳到主要内容
CNode

nodejs里的co调用问题,有谁知道这是什么原因吗?

问答
Aarden__legacy_54519562d0c2f0fe2f533a16发布于 11 年前最后回复 11 年前
239440

首先定义了一个test.js文件

'use strict'

var test = exports;

test.getMaxServiceId = function (callback) {

    callback("88");

    console.log("dd");

};

然后定义了一个app.js执行文件

'use strict'

var co = require('co');
var Promise = require('bluebird');
var test = require("./test.js")

var testAsync = Promise.promisifyAll(test);

co(function* () {

    var maxServiceId = yield testAsync.getMaxServiceIdAsync();

    console.log("ddddddddddddddd");

});

node app.js 运行的时候 test.js文件里的getMaxServiceId方法执行了,"dd" 也打了出来,但是在app.js文件里的 "ddddddddddddddd" 没有打出来,也就是在调用 getMaxServiceIdAsync方法后,后面就不执行了。本程充是想学习下co和bluebird的用法,想请教下高手能帮我看看像这种解决回调的方式应该如何处理。

查看回复

回复 (2)

A
albin3#111 年前
callback("88");

改成

callback(null, "88");

Promise.promisifyAll接收的参数里面回调必须是 function (err, val) {} 形式的。 详细的你得研究一下这个函数。

参与回复

登录后即可参与回复。登录