javascript - 如何防止我的数组在承诺中改变?
问题描述
我在 javascript 中使用 Promise,对于 resolve 变量,我正在传递一个多维数组。但由于某种原因,我的数组在 then 函数中发生了变化。这是我的代码,
Id_name_disp = [[], []];
var list = $("#Approversdisp").val().split(", ");
var promise = new Promise(function(resolve, reject){
for(var i = 0; i < list.length-1; i++){
$.ajax({
"url" :"private",
"type" : "GET",
"data" : {"name": list[i].trim()},
"contentType" : "application/json",
"success" : function(data) {
Id_name_disp[0] = Id_name_disp[0].concat(data[0]);
Id_name_disp[1] = Id_name_disp[1].concat(data[1]);
resolve(Id_name_disp);
},
"error" : function(jqXHR, textStatus, errorThrown)
{
reject(textStatus+": "+jqXHR.responseText);
}
});
}
});
promise.then(function(fromresolve){
console.log(fromresolve);
console.log(fromresolve[0]);
console.log(fromresolve);
console.log(fromresolve[0].length);
for(var k = 0; k < list.length-1; k++){
var ind = -1;
for(var x = 0; x < fromresolve[0].length; x++){
console.log("x: "+x);
console.log(fromresolve[0][x]+" "+list[k]);
ind = fromresolve[0][x].indexOf(list[k]);
console.log(ind);
if(ind > -1){
console.log("found: "+ind);
break;
}
}
sapid+=" "+fromresolve[0][ind].substring(fromresolve[0][ind].indexOf("("), fromresolve[0][ind].indexOf(")")+1)+",";
console.log(sapid);
}
}).catch(function(fromreject){
alert(fromreject);
});
fromresolve 是多维数组,其中 0 位置是 6 个元素的数组,第 1 位置是 6 个元素的数组。但是当我执行 fromresolve[0] 时,我得到一个包含一个元素的数组。为什么会这样。预期的结果是 fromresolve[0] 将是一个包含 6 个元素的数组。
解决方案
推荐阅读
- python - 浮点对象不可迭代 [Python]
- javascript - 如何使用 CSS 更改标签中图像的高度和宽度?
- javascript - window.postMessage 到具有空源的 iframe
- javascript - 在 useCallback 没有更新状态值
- amazon-dynamodb - DynamoDB 查询 1 个字段大于
- makefile - 如何将后缀应用于makefile中的多个文件?
- html - CSS - 浮动留下空白
- xml - XSLT:使用 XSLT 处理分层 XML 数据
- node.js - Snowflake NodeJs 错误:找不到模块 './data/packed/latest.json'
- html - 从 MySQL 数据表创建可在 HTML 代码中使用的变量