Javascript 送两个情人的承诺

Javascript 送两个情人的承诺,javascript,callback,arguments,promise,Javascript,Callback,Arguments,Promise,如何将附加参数传递到handleFile return fs.readFileAsync(path, 'utf8') .then(handleFile) .then(Process) // ... var handleFile = function (data) { var keyVal = {}; data.split("\n").forEach(function (element) { // ... 我处理vfile从readFileAsync获

如何将附加参数传递到
handleFile

return fs.readFileAsync(path, 'utf8')
    .then(handleFile)
    .then(Process)
    // ...

var handleFile = function (data) {
    var keyVal = {};
    data.split("\n").forEach(function (element) {

// ...
我处理
vfile
readFileAsync
获取数据

我需要它是(伪代码):

你可以用它。这是一种执行部分应用程序和设置执行范围的方法(在您的情况下,这不应该很重要,因此
null

您也可以在不使用bind的情况下实现自己的部分应用程序,然后它将如下所示:

function handleFileWithParams(param1, param2) {
    return function handleFile(data) {
        // ... do stuff
    } 
}

.then(handleFileWithParams(param1, param2))

最后,当您已经在使用像lodash这样的库时,您可以使用提供的函数来完成此操作。

读取的数据将是
handleFile
的最后一个参数。您是否尝试过使用此部分应用程序,将dost参数存储在一个闭包中,然后重新运行只处理数据的函数?我尝试过,但它不起作用。我在handleFile中始终没有找到它parameters..@kyrylkov:您缺少应答中添加的一个关键的
return
@Mark
return
。第二个选项可能有效,但是使用
bind
将第一个参数绑定到newParam1时,
数据
参数不会丢失吗?是,因此,我在提供的示例中提出了函数签名中的另一个参数顺序(数据用作最后一个参数)
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) {
.then(handleFile.bind(null, newParam1,newParam2))

var handleFile = function (newParam1,newParam2, data,) { // ...
function handleFileWithParams(param1, param2) {
    return function handleFile(data) {
        // ... do stuff
    } 
}

.then(handleFileWithParams(param1, param2))