Promisify prompt.js

时间:2015-02-17 10:17:13

标签: javascript node.js promise bluebird

原帖GitHub


我正在尝试宣传prompt.js。 谁能说我做错了什么?

var prompt = require('prompt');
var Promise = require("bluebird");
Promise.promisifyAll(prompt);
prompt.start().then(function() {
    console.log("test");
    return true;
});
prompt.get(['message'], function(err, result) {
    if (err) {
        return onErr(err);
    }
    console.log('Write a push Message repositoryName:');
    console.log('  Message: ' + result.message);
    return result;
}).then(function(result) {
    console.log("hello");
    return result;
});

1 个答案:

答案 0 :(得分:2)

使用promisifyAll使用蓝鸟宣传对象时 - 默认情况下会添加Async后缀。因此,而不是致电get来电getAsync

prompt.start(); // start is synchronous, no need to `then` it

prompt.getAsync(["message"]).then(function(response) { // note the suffix added
    console.log("got message", response.message);
    // work with message here, can use promise aggregation/chaining and use like
    // any other promise method
});

引用文档:

  

宣传的方法名称将是以“Async”为后缀的原始方法名称。对象的任何类属性(许多模块的主要导出都是这种情况)也是默认的,包括静态方法和实例方法。 Class属性是一个具有非空.prototype对象的函数值的属性。返回输入对象。

(强调我的)