在javascript中调用Parse方法后,代码未按顺序运行

在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++)

我在我的项目中使用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');
    }
})();
(函数(){
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。虽然不是同一件事,但这可能会有所帮助:为什么要对其进行降级?这太蹩脚了。他们显然需要异步方面的帮助。