gpt4 book ai didi

javascript - 如何在 Node 的嵌套函数中使用回调?

转载 作者:行者123 更新时间:2023-12-01 01:43:38 25 4
gpt4 key购买 nike

我收到“TypeError:回调不是函数”,这让我相信我误解了如何在嵌套函数中使用回调。

功能:

function getAudioInfo(filePath, callback) {
ffprobe(filePath, { path: ffprobeStatic.path }, function (err, info) {
console.log("ffprobe output: " + JSON.stringify(info));
if (err) {
console.log("getAudioInfo error: " + err);
callback(err, null);
} else {
callback(null, info);
}
});
}

调用:

   function checkAudioInfo(metadata_json, callback) {

var filePath = metadata_json['current_path'];

getAudioInfo(filePath, function(err, info) {
if (err) {
callback(err);
}
//operations on info
callback(null, metadata_json);
});//end getAudioInfo

}//end checkAudioInfo

这是回调的不当使用吗?

编辑:

在传递给包装 checkAudioInfo 的函数时发现错误(另一个回调错误)。我将很快进行编辑并发布正确的代码。你所有的问题都帮助我找到了答案。谢谢!

最佳答案

您的第一个代码块接受回调。第二个参数应该是一个函数。当异步代码完成时将调用此函数。

第二个代码块调用第一个代码块中的函数。您传递的第二个参数是一个函数。到目前为止,一切顺利。

在该函数内,您尝试调用回调。这会失败,因为范围内没有具有该名称的变量。

此时,还不清楚您要做什么。您传递的函数回调。您应该使用它对第一个代码块中的代码传递的数据执行一些有用的操作。

现在,您可以通过使用命名函数表达式来获取对回调函数的引用:

  getAudioInfo(filePath, function callback (err, info) {
if (err) {
callback(err);
}
//operations on info
callback(null, metadata_json);
});//end getAudioInfo

…但是你只是递归地、无限地调用它,这是没有用的。

<小时/>

重新编辑:

您现在已经添加了一个名为callback第二个变量:

function checkAudioInfo(metadata_json, callback) {

这更有意义。

如果那个callback未定义,那是因为您在调用checkAudioInfo<时没有向它传递一个值。您还没有包含该代码。

关于javascript - 如何在 Node 的嵌套函数中使用回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151096/

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