所以这里是从解析中获取数据的代码片段:
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请建议。
答案 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(或对返回的值执行某些逻辑)