Как использовать async: false в angular js 1.6, чтобы выполнение следующей строки java-скрипта получало блок до завершения $ http - PullRequest
0 голосов
/ 17 сентября 2018

В настоящее время я использую angularjs 1.6, вызываю $http для инициализации массива и использую этот массив после 1000 строк кода в контроллере angularjs, но каждый раз происходит что-то странное. Иногда я правильно инициализирую массив, а иногда нет.

В основном, я хотел бы вызывать код JavaScript в определенном порядке, например, line1, line2, line3 и т. Д., Здесь line1 может вызывать $http, line2 может снова вызывать некоторую функцию line3 $http,

Даже я пытался использовать

$http( {  method:'POST',
          url:'/getData',
          async:false
        })

Но он не содержит исполняемый JavaScript, вместо этого выполняется следующая строка кода. Есть ли способ контролировать это, чтобы я мог выполнять код JavaScript в том же порядке так же, как я написал,

1 Ответ

0 голосов
/ 17 сентября 2018

Прежде всего, во многих случаях переход к вызову "none asynchrone" - плохая идея.Вы не знаете, сколько времени займет этот вызов, и в течение этого времени вы блокируете цикл событий пользовательского интерфейса, поэтому больше ничего не работает, и ваш сайт будет полностью зависать в течение этого времени, что довольно плохо.

Зависит от того, что вы используете (ecma script / javascript), но асинхронная функция , кажется, то, что вы ищете: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/async_function

Пример:

async function myFunction(){
    var data = await $http.get(...);
    await $http.post(..);
    return "my data";
}

Все в этой функции будет выполнено в том порядке, в котором она определена благодаря ключевому слову await , но оно все еще асинхронно, вся функция вернет Promise.

myFunction().then(function(myData) {
   console.log("End of the asynchrone function " + myData);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...