栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Javascript关闭不起作用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Javascript关闭不起作用

… var i …
async(function() { …
// errorLogging(tx, error, id);
(function(a, b, c) {
errorLogging(a, b, idsArray[c]);
})(tx, error, i);
… })


那是没有用的,因为

i
变量在那里确实有错误的值。您需要将包装器放在整个异步回调中,关闭所有在异步回调中使用的变量,但这些变量将由同步循环修改。

最简单的方法(始终有效)是简单地包装完整的循环体,并覆盖迭代变量:

for (var i = 0; i < paramsArray.length; i++) (function(i) { // here    var query = queryArray[i];    var params = paramsArray[i];    var id = idsArray[i];    window.logger.logIt("id: " + id);    tx.executeSql(query, params, function (tx, results) {        incrementSyncDownloadCount(results.rowsAffected);    }, function(tx, error) {        if (error.message.indexOf("are not unique") > 0 || error.message.indexOf("is not unique") > 0) { incrementDuplicateRecordCount(1); return false;        }        errorLogging(tx, error, id);        return true;    });}(i)); // and here

您还可以将循环中构造的所有变量(并取决于迭代变量)作为闭合参数。在您的情况下,可能看起来像这样:

for (var i = 0; i < paramsArray.length; i++) {    (function(query, params, id) { // here        window.logger.logIt("id: " + id);        tx.executeSql(query, params, function (tx, results) { incrementSyncDownloadCount(results.rowsAffected);        }, function(tx, error) { if (error.message.indexOf("are not unique") > 0 || error.message.indexOf("is not unique") > 0) {     incrementDuplicateRecordCount(1);     return false; } errorLogging(tx, error, id); return true;        });    }(queryArray[i], paramsArray[i], idsArray[i])); // here}

或者,您确定异步回调,然后仅包装:

for (var i = 0; i < paramsArray.length; i++) {    window.logger.logIt("id: " + idsArray[i]);    tx.executeSql(queryArray[i], paramsArray[i], function (tx, results) {        incrementSyncDownloadCount(results.rowsAffected);    }, (function(id) { // here        return function(tx, error) {//      ^^^^^^ and here if (error.message.indexOf("are not unique") > 0 || error.message.indexOf("is not unique") > 0) {     incrementDuplicateRecordCount(1);     return false; } errorLogging(tx, error, id); return true;        };    }(idsArray[i]))); // and here}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/575287.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号