在一個承諾庫藍鳥有函數promisifyAll或其他類似的庫,聲稱將回調模式的異步函數轉換爲基於承諾,即。 resolve()
,reject()
或done()
..那麼它是如何工作的?promisifyAll如何工作,或者它的工作要求是什麼?
例如:
function myAsync1 (data, url, callBack) {...}
,如果我把它放在
Promise.promisify(myAsycn1);
然後將我喜歡這個功能工作..
myAsync1('{..}', 'http://..').then(function(){...});
這也一直困擾着我。是否有一種模式,異步非諾言庫或功能需要遵循藍鳥promisifyAll將它們轉換爲基於承諾的方法或有一些魔法,將它們轉換。
如果沒有,那麼有什麼要求,它是如何與像的MongoDB等
請注意,您的功能不是「轉換」,功能是不可變的。相反,'Promise.promisify'不會返回一個* new *函數,它會用回調調用舊函數。 – Bergi
[嘗試瞭解promisification如何與BlueBird合作](http://stackoverflow.com/q/26391419/1048572) – Bergi
@Bergi它可能是重複的,但它的標題在SEO方面措辭如此糟糕以至於在搜索之後四個小時,我沒有遇到過一次,事實上,它更接近點擊誘餌。 –