nodejs里的co调用问题,有谁知道这是什么原因吗?
发布于 9 年前 作者 arden 3666 次浏览 最后一次编辑是 8 年前 来自 问答

首先定义了一个test.js文件 <pre><code>‘use strict’

var test = exports;

test.getMaxServiceId = function (callback) {

callback("88");

console.log("dd");

};</code></pre>

然后定义了一个app.js执行文件 <pre><code>‘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");

});</code></pre>

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

2 回复
callback("88");

改成

callback(null, "88");

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

@albin3 谢谢,现在已经可以了。

回到顶部