首先定义了一个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的用法,想请教下高手能帮我看看像这种解决回调的方式应该如何处理。
callback("88");
改成
callback(null, "88");
Promise.promisifyAll接收的参数里面回调必须是 function (err, val) {} 形式的。 详细的你得研究一下这个函数。
@albin3 谢谢,现在已经可以了。