【发布时间】:2015-05-05 20:15:15
【问题描述】:
我正在尝试读取 parse.com 上的文件并使用 for 循环遍历其中存在的所有记录。在每条记录上,我需要执行 4 个操作,每个操作都相互依赖。有人可以指导我如何做到这一点,以便在 for 循环中处理每条记录。
Parse.Cloud.httpRequest({
url: urlValue
}).then(function(fileResponse) {
console.log("processUploadFile:httpRequest:response:" + JSON.stringify(fileResponse.buffer.length));
// console.log("processUploadFile:Text:" + fileResponse.text);
var records = fileResponse.text.split("\r");
for (var i = 0; i < records.length; ++i) {
// console.log("Record:" + i + " detail:" + records[i] + "\n\n");
var record = records[i];
console.log("processUploadFile:adding patient");
Parse.Cloud.run("addPatient", {
record:record
}, {
success: function(objectId) {
console.log("Created objectId:" + JSON.stringify(objectId));
Parse.Cloud.run("addProvider", {
record:record
}, {
success: function(objectId) {
console.log("Created objectId:" + JSON.stringify(objectId));
Parse.Cloud.run("addLocation", {
record:record
}, {
success: function(objectId) {
console.log("objectId:" + JSON.stringify(objectId));
},
error: function(error) {
console.log(JSON.stringify(error));
}
});
},
error: function(error) {
console.log(JSON.stringify(error));
}
});
},
error: function(error) {
console.log(JSON.stringify(error));
}
});
};
}
}
response.success();
});
【问题讨论】:
-
这种嵌套事件的疯狂是我创建 www.taskrunnerjs.com 的原因——尽管还有很多其他选择。 IMO 那些风格的链接比这更容易阅读和理解。 (这只是一个意见,而不是一个答案。老实说,这并不完全清楚你在问什么。)
-
这些后续步骤是否相互依赖,换句话说,例如addPatient 必须在 addProvider 工作之前完成,还是可以按任何顺序执行?
-
@danh... 是的... addPatient 依赖于 addProvider 的完成
-
@brianvaughn ... www.taskrunnerjs.com 看起来很棒...但我认为我不能在 parse.com 上使用它。我可以使用承诺吗?
-
您可以(并且应该)在客户端和服务器上使用 parse.com 的 Promise。 @brianvaughn 的图书馆看起来经过深思熟虑,尽管我从未使用过它。
标签: javascript asynchronous parse-platform