我在我的项目中使用Parse.com,我注意到一些非常奇怪的东西阻止我实现我想要的东西。 这段代码:
(function() {
console.log('A');
Parse.Cloud.run('getCarMakes', {}, {
success: function(results) {
console.log('B');
for (var i = 0; i < results.length; i++) {
$scope.makes.push(results[i]);
}
},
error: function() {
console.log('C');
}
});
console.log('D');
for (var i = 0; i < $scope.makes.length; i++) {
console.log($scope.makes).get('Make');
}
})();
控制台输出是: 一个 乙 d ç
D怎么来C? 我该怎么办?
答案 0 :(得分:2)
Matansab,你需要开始思考&#34;异步&#34;。
简短的回答是:把&#34; D&#34;在&#34;成功&#34;回调。
(function () {
console.log('A');
Parse.Cloud.run('getCarMakes', {}, {
success: function (results) {
console.log('B');
for (var i=0;i<results.length;i++){
$scope.makes.push(results[i]);
}
console.log('D');
for (var i=0;i<$scope.makes.length;i++){
console.log($scope.makes).get('Make');
}
},
error: function () {
console.log('C');
}
});
console.log("This will always run right after A");
})();
&#34;成功&#34;功能是一个&#34;回调&#34;。回调是Javascript中的常见模式。他们被称为#34;在异步函数返回后。异步函数是对网络或磁盘等事物的请求,需要很长时间Javascript不应该等待。一旦异步功能准备就绪,它就会调用&#34;回调&#34;。
您可以通过Google搜索了解有关javascript回调的更多信息,或者只是尝试here
答案 1 :(得分:2)
(function () {
console.log('A');
Parse.Cloud.run('getCarMakes', {}, {
success: function (results) {
console.log('B');
for (var i=0;i<results.length;i++){
$scope.makes.push(results[i]);
}
},
error: function () {
console.log('D');
for (var i=0;i<$scope.makes.length;i++){
console.log($scope.makes).get('Make');
}
console.log('C');
}
});
})();
答案 2 :(得分:0)
它没有按顺序运行,因为您的成功和错误函数是回调。在Parse.com库实际调用它们之前,它们不会被执行。