解析.then方法和链接|语法逃避了我

时间:2014-07-27 01:38:36

标签: javascript rest asynchronous parse-platform chaining

亲爱的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:...)合并失败。

关于我如何

的任何建议
  1. 检查Parse DB中是否存在电子邮件,然后
  2. 等到结果返回以便使用其他功能进一步操作
  3. 非常感谢。

    一旦我有.then()想出会有更多的异步等待层。

    干杯,

    詹姆斯

1 个答案:

答案 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.
})