gpt4 book ai didi

javascript - 我正在尝试使用 Bluebird 的方法 Promisify,但它不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:45:03 24 4
gpt4 key购买 nike

我无法在 bluebird 上创建一个简单的示例。我已经使用了 new Promise 方法并且它有效,但是当我尝试使用 Promisify 方法时,我可能做错了什么。

exports.makeRequest = function(someText){
return Promise.resolve(someText);
}

var makeRequestAsync = Promise.promisify(exports.makeRequest);

makeRequestAsync('Testing').then(function(data){
console.log(data); // --> log never appears
});

我真的很想了解 promisify 是如何工作的。

最佳答案

Bluebird 的 promisify() 仅适用于将回调作为其最后一个参数的节点样式函数,其中该回调采用两个参数,一个错误和数据。您的函数不符合此条件。

您可以阅读它的工作原理 here .

此外,没有必要对已经返回 promise 的函数进行 promise 。您可以直接调用该函数并使用其返回的 promise ,因为它已经是一个 promise 返回函数。

exports.makeRequest = function(someText){
return Promise.resolve(someText);
}

exports.makeRequest('Testing').then(function(data){
console.log(data);
});

工作演示:http://jsfiddle.net/jfriend00/n01zyqc6/


当然,由于您的函数实际上并不是异步的,因此似乎根本没有任何理由对其使用 promises。


这是一个实际 promise 异步并使用正确调用约定的示例:

exports.myFunc = function(data, callback) {
// make the result async
setTimeout(function() {
// call the callback with the node style calling convention
callback(0, data);
}, 500);

};

var myFuncAsync = Promise.promisify(exports.myFunc);

myFuncAsync("Hello").then(function(result) {
console.log(result);
});

关于javascript - 我正在尝试使用 Bluebird 的方法 Promisify,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30116122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com