如何处理angularjs中的响应?

时间:2016-09-02 12:31:37

标签: angularjs parse-platform

所以这里是从解析中获取数据的代码片段:

var schooolId = 111; 

var query = new Parse.Query("Schools");

query.equalTo("objectId", schooolId);

query.find({
success: function (results) {

    console.log('in success');
    $scope.funnelId = results[0].get("funnelId");

},
error: function (error) {

}

});

console.log('after function >> ' + $scope.funnelId);

现在输出首先打印“功能>>”之后然后通过这种方式'成功'它没有把值放在'$ scope.funnelId'中,我们需要等待响应然后执行其余的。

这应该像这样回应: 输出: “成功” 然后 “功能后>>”

通过这种方式,这将把价值放在:$ scope.funnelId

请建议。

1 个答案:

答案 0 :(得分:0)

承诺将解决问题。

var query = new Parse.Query("Schools");

query.equalTo("objectId", schooolId);
var defer = $q.defer();
query.find({
success: function (results) {

    console.log('in success');
 defer.resolve(results[0].get("funnelId"));
},
error: function (error) {
  defer.reject(error);
}

});

defer.promise.then(function(funnelid){
  console.log('after function >> ' + funnelid);
})

问题是在你访问console.log之前没有返回对parse的异步调用。使用promises,您可以控制console.log(或对返回的值执行某些逻辑)