gpt4 book ai didi

javascript - 如何在没有嵌套回调的情况下访问变量?

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:28 24 4
gpt4 key购买 nike

我有一个使用 Node FileSystem 模块的简单嵌套回调,但我很难尝试访问一个我认为仅由于作用域链才可用的变量。我的目标是尽可能减少嵌套回调。

var fs = require('fs');
var directory = '/Users/johndoe/desktop/temp';

fs.readdir(directory, function(err, files) {
files.forEach(function(file) {
var filePath = directory + "/" + file;
fs.readFile(filePath, function(err, data) {
// I have access to filePath variable here. This works just fine.
console.log(filePath);
});
});
});

但这就是我想写的:

var fs = require('fs');
var directory = '/Users/johndoe/desktop/temp';

fs.readdir(directory, processFiles);

function processFiles(err, files) {
files.forEach(function(file) {
var filePath = directory + "/" + file;
fs.readFile(filePath, processSingleFile);
});
}

function processSingleFile(err, data) {
// how do I get the filePath variable here?
console.log(filePath);
}

如何在第二个示例中获取这里的 filePath 变量?

最佳答案

您可以通过绑定(bind)将 filePath 作为第一个参数传递给 processSingleFile

function processFiles(err, files) {
files.forEach(function(file) {
var filePath = directory + "/" + file;
fs.readFile(filePath, processSingleFile.bind(this, filePath));
});
}

function processSingleFile(filePath, err, data) {
console.log(filePath);
}

关于javascript - 如何在没有嵌套回调的情况下访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32599785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com