サーバー上にオブジェクトを作成するために、POST を複数回呼び出しています。POST は promise でラップされています。promise の配列を作成して Q.all に渡しますが、解決されると、配列内のすべてのオブジェクトが同じ ID を持ち、サーバー上にオブジェクトが 1 つだけ作成されます。
これが私のコードです
for (var i = txArray.length - 1; i >= 0; i--) {
txArray[i]._action = 'update';
promises.push(newVertex(url));
};
return Q.all(promises).then(function(result){
console.log(result);
});
function newVertex(url) {
var deferred = Q.defer();
var xhr;
try {
xhr = new_xhr();
} catch (e) {
deferred.reject(-1);
return deferred.promise;
}
xhr.open('POST', url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
deferred.resolve(xhr.responseText);
} else {
deferred.reject(xhr);
}
}
};
xhr.send();
return deferred.promise;
}
結果は、すべて同じ ID を持つオブジェクトを返します。なぜかわからない?誰にも提案はありますか。