我试图找出如何对promise函数参数进行后期绑定。在大多数情况下,我希望承诺流程只是一系列函数名称,因此它读起来就像一系列步骤(除非它像下面的单行一样)
(adjustedDate) => { aGreatFunctionNeedingADateInput.bind(undefined,adjustedDate) }
这是一个例子。该函数正在等待一个日期,因为它是晚期绑定输入,并且该输入将来自promise链中的某个步骤。
let aGreatFunctionNeedingADateInput = greatFunction.bind(undefined, x, y);
somePromise().then(functionThatMightChangeDate)
.then( (adjustedDate) => {
aGreatFunctionNeedingADateInput.bind(undefined,adjustedDate)
})
.then(aGreatFunctionNeedingADateInput)
我知道这里有很多奇怪且可能错误的范围,但实质上我想将promise函数的最后一个参数绑定为最后一步,以防它在此过程中发生变化。如果可能,请告诉我。
更新:
在此链接中找到此示例:http://lhorie.github.io/mithril-blog/curry-flavored-promises.html
它实现了类似的结果,除了它在创建时绑定到固定值(John Doe)而不是像我在下面尝试的那样在promise链的中间。类似的想法,但我可以适应我的用途。
var createdBy = function(user, items) {
return items.filter(function(item) {
return item.createdBy == user
});
};
m.request({method: "GET", url: "/api/projects"})
.then(pastItems) // filter past projects
.then(createdBy.bind(this, "John Doe")) // filter projects created by john doe
.then(log) // log past projects created by john doe
答案 0 :(得分:0)
你正在思考它。
“后期绑定”是我们通常所说的“传递”,因此不会绑定。
.then((adjustedDate) => aGreatFunctionNeedingADateInput(adjustedDate))
或
.then(aGreatFunctionNeedingADateInput)