使用不同的数据发出多个请求
Make multiple requests with different data
我想发出多个请求,其中数据会在标题后附加一个数字。但不是例如“你好 1”、“你好 2”、“你好 3”、“你好 4” 我得到“你好 4”、“你好 4”、“你好 4”、“你好 4”。
console.log(item.title);
在控制台中正确显示“Hello 1”、“Hello 2”、“Hello 3”、“Hello 4”。
我猜是因为请求是异步的。
vm.title = vm.case.title;
for (let i = 1; i <= vm.number_of_cases_to_create; i++) {
vm.createNewCase(i, vm.case);
}
function createNewCase(number, item) {
item.title = vm.title + ' ' + number;
console.log(item.title);
CaseProvider.create(item).then(function (case) {
console.log(case.id);
});
}
你是对的,这是一个异步结果。在行 vm.createNewCase(i, vm.case)
上,您将相同的对象发送到方法 createNewCase
并且当异步启动时,它引用相同的对象,因此所有调用都使用相同的“Hello 4”值。
我建议将 vm.case
的副本传递给您的方法,这样代码示例应该会按预期工作。在 javascript.
中有关于对象克隆的 a great answer
我想发出多个请求,其中数据会在标题后附加一个数字。但不是例如“你好 1”、“你好 2”、“你好 3”、“你好 4” 我得到“你好 4”、“你好 4”、“你好 4”、“你好 4”。
console.log(item.title);
在控制台中正确显示“Hello 1”、“Hello 2”、“Hello 3”、“Hello 4”。
我猜是因为请求是异步的。
vm.title = vm.case.title;
for (let i = 1; i <= vm.number_of_cases_to_create; i++) {
vm.createNewCase(i, vm.case);
}
function createNewCase(number, item) {
item.title = vm.title + ' ' + number;
console.log(item.title);
CaseProvider.create(item).then(function (case) {
console.log(case.id);
});
}
你是对的,这是一个异步结果。在行 vm.createNewCase(i, vm.case)
上,您将相同的对象发送到方法 createNewCase
并且当异步启动时,它引用相同的对象,因此所有调用都使用相同的“Hello 4”值。
我建议将 vm.case
的副本传递给您的方法,这样代码示例应该会按预期工作。在 javascript.