Javascript 系列承诺和响应。云代码成功
我有点困惑在哪里放置响应。使用连续承诺时成功 情况是这样的:我有一个云函数,它接受一系列电子邮件地址和当前用户。该函数执行以下操作: 根据当前用户的用户对象id查找当前用户。 迭代电子邮件地址数组 查找每个给定电子邮件地址是否有现有用户 如果存在现有用户,我们将检查现有用户和当前用户是否是朋友 如果他们不是朋友,就会建立友谊。 现在,当我在没有response.success的情况下运行此函数时,它会完全按照我的预期运行,并且会创建友谊条目。但是,无论我将响应放在代码中的何处,我都会得到response.success消息,并且所有序列化的承诺都不会执行 结果成功/失败的原因:我正在从iOS应用程序执行此功能,我希望在iOS端正确处理成功或失败案例 以下是云函数:Javascript 系列承诺和响应。云代码成功,javascript,parse-platform,promise,Javascript,Parse Platform,Promise,我有点困惑在哪里放置响应。使用连续承诺时成功 情况是这样的:我有一个云函数,它接受一系列电子邮件地址和当前用户。该函数执行以下操作: 根据当前用户的用户对象id查找当前用户。 迭代电子邮件地址数组 查找每个给定电子邮件地址是否有现有用户 如果存在现有用户,我们将检查现有用户和当前用户是否是朋友 如果他们不是朋友,就会建立友谊。 现在,当我在没有response.success的情况下运行此函数时,它会完全按照我的预期运行,并且会创建友谊条目。但是,无论我将响应放在代码中的何处,我都会得到resp
Parse.Cloud.define("friendExistingUsers", function(request, response) {
// Get our parameters
var addresses = request.params.emailAddresses;
var userId = request.params.user;
// Query for our user
var userQuery = new Parse.Query("User");
userQuery.equalTo("objectId", userId)
userQuery.first().then(function(currentUser) {
// if we find the user, walk the addresses
var promise = Parse.Promise.as("success");
_.each(addresses, function(address) {
console.log(address);
// add a then to our promise to handle whether a relationship is
// being created.
promise = promise.then(function() {
// find if there is a user for that address
var emailQuery = new Parse.Query("User");
emailQuery.equalTo("email", address);
emailQuery.first().then(function(addressUser) {
if (typeof addressUser != 'undefined') {
// found one.
console.log(addressUser);
// figure out if our current user and this user are
// friends.
var friendQuery = new Parse.Query("FVFriendship");
friendQuery.equalTo("from", currentUser);
friendQuery.equalTo("to", addressUser);
friendQuery.first().then(function(relationship) {
if (typeof relationship != 'undefined') {
// if they are, we need to pass.
console.log("Found a relationship: " = relationship)
} else {
// They are not. Add the friendship
var Friendship = Parse.Object.extend("FVFriendship");
var friendship = new Friendship();
friendship.set("from", currentUser);
friendship.set("to", addressUser);
friendship.save().then(function(result) {
console.log("Created a friendship: " + result)
});
};
});
} else {
// we did not find a user for that address
console.log("No user for " + address);
};
});
});
});
console.log(promise);
return promise;
}).then(function() {
response.success("success");
});
});
提前谢谢。如果还有什么可以补充的,请告诉我。您的。然后,promise附带的回调函数应该返回一个promise。在使用承诺时,忽略这一点是常见的错误
此外,Parse似乎不像浏览器那样使用console.log显示对象,所以我将它们包装到JSON.stringify中 这不完全是一个代码片段。尝试将参数传递给方法thenfunctiondata{console.logdata.success},以便传递承诺值