私はウェブフロントエンドを構築していますが、ユーザーはいくつかの写真を選択して一度にすべて削除できるはずです。だから私はこれでそれを試しています:
function deletePic(){
var inputs = document.querySelectorAll("input[type='checkbox']");
var PicsForDelete =[];
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].checked == true){
userPics_query.get(inputs[i].id, {
success: function(picForDelete) {
PicsForDelete.push(picForDelete);
alert(picForDelete.id +" " + PicsForDelete[i]);
},
error: function(picForDelete, error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
}
destroyItAll(PicsForDelete);
}
function destroyItAll(PicsForDelete){
if(confirm("Press 'OK' to delete "+PicsForDelete.length +" pictures!")){
Parse.Object.destroyAll(PicsForDelete,{
success: function(myObject) {
alert(PicsForDelete.length + " Images successfully deleted!");
},
error: function(myObject, error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
}
問題は、私のスクリプトが常に最初にそれらをすべて破棄してから、DBからオブジェクトを取り出そうとすることです。したがって、何も削除されません。
だから私の質問は、どうすれば解析サーバーの優先呼び出しを変更できますか?
Promisesを使用してリクエストを処理します。AJAXリクエストは非同期であるため、非同期で処理する必要があります
var imgPromises = [];
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].checked == true){
var imgForDelPromise = new Promise(function (resolve) {
userPics_query.get(inputs[i].id, {
success: function(picForDelete) {
resolve(picForDelete);
},
error: function(picForDelete, error) {
alert("Error: " + error.code + " " + error.message);
}
});
});
imgPromises.push(imgForDelPromise);
}
}
Promise.all(imgPromises).then(function (imgs) {
destroyItAll(imgs);
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加