【问题标题】:Promisifying Callbacks in Node.js [duplicate]在 Node.js 中承诺回调 [重复]
【发布时间】:2017-01-15 16:15:20
【问题描述】:

我有这个节点 js 应用程序使用几个回调函数,我试图承诺无济于事。

它已经到了我不知道它是否可能的地步。如果你能帮我承诺下面的代码,我可能会做剩下的事情:

var i2c_htu21d = require('htu21d-i2c');
var htu21df = new i2c_htu21d();


htu21df.readTemperature(function (temp) {
        console.log('Temperature, C:', temp);
});

任何见解都有帮助!!!

【问题讨论】:

标签: javascript node.js callback promise


【解决方案1】:

常见的模式是:

<promisified> = function() {
    return new Promise(function(resolve, reject) {
       <callbackFunction>(function (err, result) {
           if (err)
               reject(err);
           else
               resolve(result);
       });
    });
}

对于您的具体示例(您可能希望添加错误处理):

readTemperature = function() {
    return new Promise(function(resolve) {
       htu21df.readTemperature(function (temp) {
          resolve(temp);
       });
    });
}

readTemperature().then(function(temp) {
    console.log('Temperature, C:', temp);
});

【讨论】:

  • 它以某种方式工作!我会继续练习这个,但非常感谢你,这很有帮助!
【解决方案2】:

您需要为此使用bluebird

var bluebird = require('bluebird');
var i2c_htu21d = require('htu21d-i2c');
var htu21df = new i2c_htu21d();
var readTemperature = bluebird.promisify(htu21df.readTemperature);


readTemperature().then((temp) => {console.log('Temperature, C:', temp);});

【讨论】:

    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 2017-04-03
    • 2017-01-07
    • 2023-03-28
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多