在javascript中调用Parse方法后,代码未按顺序运行
我在我的项目中使用Parse.com,我注意到一些非常奇怪的东西阻止我实现我想要的东西。 此代码:在javascript中调用Parse方法后,代码未按顺序运行,javascript,parse-platform,Javascript,Parse Platform,我在我的项目中使用Parse.com,我注意到一些非常奇怪的东西阻止我实现我想要的东西。 此代码: (function() { console.log('A'); Parse.Cloud.run('getCarMakes', {}, { success: function(results) { console.log('B'); for (var i = 0; i < results.length; i++)
(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');
}
})();
(函数(){
console.log('A');
run('getCarMakes',{}{
成功:功能(结果){
console.log('B');
对于(var i=0;i
控制台输出为:
A.
B
D
C
为什么D在C之前?
我能怎么办 Matansab,您需要开始“异步”思考 简单的回答是:将“D”放在“success”回调中
(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");
})();
(函数(){
console.log('A');
run('getCarMakes',{}{
成功:功能(结果){
console.log('B');
对于(var i=0;iMatansab),您需要开始“异步”思考
简单的回答是:将“D”放在“success”回调中
(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");
})();
(函数(){
console.log('A');
run('getCarMakes',{}{
成功:功能(结果){
console.log('B');
对于(var i=0;i它不是按顺序运行的,因为成功函数和错误函数都是回调函数。它们在Parse.com库实际调用它们之前不会执行。它不是按顺序运行的,因为成功函数和错误函数都是回调函数。它们在Parse.com库实际调用它们之前不会执行。l Cole是对的。同样取决于你的实现,因为C在错误块中运行,你也可以在那里运行D,它将在C之前运行
(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');
}
});
})();
(函数(){
console.log('A');
run('getCarMakes',{}{
成功:功能(结果){
console.log('B');
对于(var i=0;iMichael Cole是正确的。同样取决于您的实现,因为C在错误块中运行,所以您也可以在那里运行D,它将在C之前运行
(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');
}
});
})();
(函数(){
console.log('A');
run('getCarMakes',{}{
成功:功能(结果){
console.log('B');
对于(var i=0;我假设Parse.Cloud.run
是一种使代码异步运行(向服务器发出请求)的方法,这就是为什么您必须为success
(请求成功时运行)和error
(请求以某种方式失败时运行)提供回调的原因。没有解决方案,你需要异步思考,并以一种与之兼容的方式重新设计代码。此外,我不确定为什么/如何获得B和C。虽然不是同一件事,但这可能会有所帮助:为什么要对其进行降级?这太蹩脚了。他们显然需要异步方面的帮助。我假设Parse.Cloud.run
是一种导致C的方法ode异步运行(请求服务器),这就是为什么必须为成功
(请求成功时运行)和错误
(请求以某种方式失败时运行)提供回调的原因。没有解决方案,您需要异步思考,并以一种与之兼容的方式重新设计代码。此外,我不确定为什么/如何获得B和C。虽然不是同一件事,但这可能会有所帮助:为什么要对其进行降级?这太蹩脚了。他们显然需要异步方面的帮助。