【发布时间】:2015-06-18 04:19:58
【问题描述】:
在 promise 库中,bluebird 具有函数 promisifyAll 或其他类似的库,它们声称将具有回调模式的异步函数转换为基于 promise 的 ie。 resolve()、reject() 或 done()..那么它是如何工作的呢?
例如:
function myAsync1 (data, url, callBack) {...}
如果我把它放进去
Promise.promisify(myAsycn1);
那么我的功能会像这样工作吗..
myAsync1('{..}', 'http://..').then(function(){...});
这一直困扰着我。 Bluebird promisifyAll 是否需要遵循异步非承诺库或函数的模式才能将它们转换为基于承诺的方法,或者有一些魔法可以将它们转换。
如果不是,那么有什么要求以及它如何与 mongodb 等现有库一起使用。
【问题讨论】:
-
请注意,您的函数未“转换”,函数是不可变的。相反,
Promise.promisify确实返回了一个 new 函数,该函数将通过回调调用旧函数。 -
@Bergi 它可能是重复的,但它的标题在搜索引擎优化方面措辞如此糟糕,以至于在搜索了四个小时后我没有远程遇到它,事实上它更多的是点击诱饵.
-
但是,十亿感谢您分享该链接,它确认并澄清了许多事情!!!
标签: javascript node.js npm bluebird