我在将值传递给匿名函数的参数(作为setTimeout函数的参数传递)时遇到麻烦。

我已经被困了5个多小时了...

请查看下面的代码并给我帮助。

提前致谢!!

    if (_que.length > 0){

        var nextUrl = _shiftNextUrlFromQue();

        //here, the value for nextUrl exists.the value is url string.
        console.log(nextUrl);


        setTimeout(function(nextUrl) {

            //here, the value is undefined.
            _analyzeUrl(nextUrl);


            }, 10000
        );

    }

最佳答案

您期望将nextUrl作为setTimeout回调函数的参数。该变量在父函数作用域中定义,并且有您需要的值。

正确的代码应该是:

if (_que.length > 0) {

    var nextUrl = _shiftNextUrlFromQue();

    //here, the value for nextUrl exists.the value is url string.
    console.log(nextUrl);


    setTimeout(function() { //HERE!... the timeout callback function has no argument

        _analyzeUrl(nextUrl);


        }, 10000
    );

}

10-06 11:48