我發現了一種難以實現的方式,那就是不能簡單地將對象的函數傳遞給Bluebird then
。我假設Bluebird的then
正在做一些魔術,並將匿名函數中的傳入函數封裝起來。所以我附加了一個.bind
的功能,它的工作。這是藍鳥做這件事的正確方法嗎?或者有更好的方法嗎?將對象綁定到Promise.then()參數的正確方法
var Promise = require("bluebird")
var Chair = function(){
this.color = "red"
return this
}
Chair.prototype.build = function(wood){
return this.color + " " + wood
}
var chair = new Chair()
//var x = chair.build("cherry")
Promise.resolve("cherry")
.then(chair.build.bind(chair)) // color is undefined without bind
.then(console.log)
我知道這一切都不是異步,所以請裸露與同步的例子,我的用法是異步的。
有沒有聽說過藍鳥的,但如果它的承諾遵循由jQuery實現的Promise模式,那麼這是一條路,只要你的目標是支持'Function.bind'的現代瀏覽器(否則你需要自己推出,或者使用Underscore作爲'綁定'shim) – Lambart
當然。如果@thefourtheye是對的,並且這個'Promise'有它自己的'bind'功能,那麼我可能會使用它。 – Lambart
@Lambart它是藍鳥特有的功能:-) – thefourtheye