亲爱的stackoverflow社区,
我使用应用程序工艺作为JS云IDE并集成Parse的云数据库用于存储。
我正在编写订阅服务,并希望在验证用户身份或提示他们注册之前检查用户是否已订阅。作为异步电话,我试图利用Parse' s / .then method来等待服务器的响应,然后再继续。
我已经阅读了Parse网站上的示例和示例(之前已链接过),但无法绕过它。
此代码起作用,如果找到匹配项,则返回电子邮件地址:
... *Parse declaration etc*
query.find({
success: function(results){
if(results.length>0){
app.setValue("lblOutput", results[0].attributes.email);
}
else{
app.setValue("lblOutput", "No match.");
}
},
error: function(object, error){
console.log(error.message);
console.log(object);
}
});
我尝试链接,最近这个:
query.find().then(function(results) {
if(results){
console.log("Within the Then!");
console.log(results);
}
else{
console.log("Could be an error");
}
});
说明方法或财产的成功'对于undefined无效。我试图在链接尝试中将第一个函数的语法(success:... // error:...)合并失败。
关于我如何
的任何建议非常感谢。
一旦我有.then()想出会有更多的异步等待层。
干杯,
詹姆斯
答案 0 :(得分:0)
您处理的语法不正确,应该是:
query.find().then(
function(results) {
console.log("Within the Then!");
console.log(results);
},
function(error){
console.log("Could be an error"+error);
}
);
then()函数需要一个或两个函数。
第一个是成功处理程序,第二个是错误处理程序。
query.find()。然后(成功,错误)
此代码段尚未经过测试,但应该非常接近。
var query = new Parse.Query(Parse.User);
query.equalTo(email, "me@me.com");
query.count().then(
function(resultsCount) {
//success handler
if(resultsCount > 0){
doSomeOtherFunction();
}
},
function(error){
//error handler
console.log("Error:"+error);
}
);
如果你有更多的异步工作要做,你的方法应该与此类似,请记住,当链接promises时,last then()应包含你的错误处理。
query.find().then(function(result){
doSomethingAsync(); //must return a promise for chaining to work!
}).then(function(result1){
doSomethingAsync2(); //must return a promise for chaining to work!
}).then(function(result2){
doSomethingAsync3(); //must return a promise for chaining to work!
}).then(null,function(error){
// an alternative way to handle errors
//handles errors for all chained promises.
})