gpt4 book ai didi

javascript - JS中如何抽象出一个函数作为参数?

转载 作者:行者123 更新时间:2023-12-02 17:49:35 25 4
gpt4 key购买 nike

我正在使用 async.js 执行以下操作:

var async = require('async');
var i = 0;
var continueWhilst = true;
async.whilst(
function test() { return continueWhilst; },
function doThisEveryTime(next) {
i++;
if (i===5) {
continueWhilst = false;
}
console.log(i);
next();
},
function (err) {
// Done
}
);

以上方法有效。 This is the documentation for async.whilst .

现在我想抽象出 doThisEveryTime 函数,以便代码更具可读性。我尝试这样做:

var i = 0;
var continueWhilst = true;
async.whilst(
function test() { return continueWhilst; },
doThisEveryTime2(next),
function (err) {
// Done
}
);

function doThisEveryTime2(next) {
i++;
if (i===5) {
continueWhilst = false;
}
console.log(i);
next();
}

但是没有成功。错误信息如下:

  doThisEveryTime2(next),
^
ReferenceError: next is not defined

如何正确执行此操作?

最佳答案

您只需传递 doThisEveryTime 函数,而不是调用它 - 没有括号,没有 next:

var i = 0;
var continueWhilst = true;
async.whilst(
function test() { return continueWhilst; },
doThisEveryTime2,
function (err) {
// Done
}
);

另请注意,您应该使用 timesSeries function对于您正在做的事情 - 额外的好处是 idoThisEveryTime 函数的函数参数,而不是全局变量。

关于javascript - JS中如何抽象出一个函数作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21477592/

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