发送带有两个参数的承诺
Send promise with two params
如何将附加参数传递给handleFile
?
return fs.readFileAsync(path, 'utf8')
.then(handleFile)
.then(Process)
// ...
var handleFile = function (data) {
var keyVal = {};
data.split("\n").forEach(function (element) {
// ...
我处理 vfile
从 readFileAsync
获取数据。
我需要它类似于(伪代码):
return fs.readFileAsync(path, 'utf8')
.then(handleFile(newParam1,newParam2))
.then(Process)
// ...
var handleFile = function (data,newParam1,newParam2) {
return fs.readFileAsync(path, 'utf8')
.then(function(data) {
// get newParam1, newParam2 here or make sure they are available in closure
return handleFile(data, newParam1, newParam2);
})
.then(Process)
....
var handleFile = function (data,newParam1,newParam2) {
你可以用.bind()。这是一种进行部分应用并设置执行范围的方法(这在您的情况下不重要,因此 null
)
.then(handleFile.bind(null, newParam1,newParam2))
var handleFile = function (newParam1,newParam2, data,) { // ...
你也可以不使用 bind 实现自己的部分应用,那么它看起来像:
function handleFileWithParams(param1, param2) {
return function handleFile(data) {
// ... do stuff
}
}
.then(handleFileWithParams(param1, param2))
最后,当您已经在使用像 lodash 这样的库时,您可以使用提供的函数 _.partial,它就是这样做的。
如何将附加参数传递给handleFile
?
return fs.readFileAsync(path, 'utf8')
.then(handleFile)
.then(Process)
// ...
var handleFile = function (data) {
var keyVal = {};
data.split("\n").forEach(function (element) {
// ...
我处理 vfile
从 readFileAsync
获取数据。
我需要它类似于(伪代码):
return fs.readFileAsync(path, 'utf8')
.then(handleFile(newParam1,newParam2))
.then(Process)
// ...
var handleFile = function (data,newParam1,newParam2) {
return fs.readFileAsync(path, 'utf8')
.then(function(data) {
// get newParam1, newParam2 here or make sure they are available in closure
return handleFile(data, newParam1, newParam2);
})
.then(Process)
....
var handleFile = function (data,newParam1,newParam2) {
你可以用.bind()。这是一种进行部分应用并设置执行范围的方法(这在您的情况下不重要,因此 null
)
.then(handleFile.bind(null, newParam1,newParam2))
var handleFile = function (newParam1,newParam2, data,) { // ...
你也可以不使用 bind 实现自己的部分应用,那么它看起来像:
function handleFileWithParams(param1, param2) {
return function handleFile(data) {
// ... do stuff
}
}
.then(handleFileWithParams(param1, param2))
最后,当您已经在使用像 lodash 这样的库时,您可以使用提供的函数 _.partial,它就是这样做的。