1

我在一个函数中有这个:

for (i=0; i < toTranslateArray.length; i++)
{
    (function(i)
    {
        getTranslation(toTranslateArray[i],function(callback_result)
        {
            trans += callback_result;
        });         
    })(i);  
}
// code using last value of trans

我需要使用 trans 的最后一个值。我看过很多例子,但我就是无法让它发挥作用。另一个与我的问题相同的答案:链接

4

1 回答 1

1

这是处理异步循环的一种非常标准的方法(另请参阅循环内的 JavaScript 闭包——简单实用的示例):

var results = [];
for (var count=0; count<toTranslateArray.length; count++) (function(i) {
    getTranslation(toTranslateArray[count], function(res) {
        results[i] = res;
        if (! --count) { // when all results are settled (count is back to zero)
            var trans = results.join("");
            // code using trans
        }
    });           
})(count);

请注意,这只会在数组中至少有一项时执行代码。

于 2013-08-14T15:05:28.873 回答