Понимание метода асинхронного узла - PullRequest
0 голосов
/ 19 сентября 2019

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

В одном методе у меня есть следующий код

var x = someMethod("1","2","3"); // Finish before anything below can be ran

Сам метод прост

function someMethod(x,y,z){
    if(1){
        return "sdfh"
    } else if(2){
        return "asdf"
    } else {
        return "ljkk"
    }
}

Как я могу получить x, прежде чем продолжить код под ним.Я видел примеры вложенных функций, ожидание, асинхронность, но я потерян

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Try:

const someMethod = (x, y, z) => {
  ...
};

const otherMethod = async () => {
  let x = 'before value';
  console.log(`before someMethod x: ${x}`);
  // Finish before anything below can be ran
  x = await someMethod("1", "2", "3"); 
  console.log(`after someMethod x: ${x}`);
};

По сути, вы определяете функцию, которая имеет вызов await, как асинхронную функцию, используя ключевое слово async в объявлении функции, и можете обозначать ту часть кода, которая вам нужна.ждать, предвкушая с ожиданием.В этом есть свои нюансы, но, надеюсь, это поможет.

0 голосов
/ 19 сентября 2019

Java-скрипт является однопоточным и синхронным.Я рекомендую проверить обещания JavaScript.Однако я бы предположил, что ваш код выполняется синхронно, пока не достигнет чего-то вроде AJAX, который является асинхронным.проверить этот ответ: Когда JavaScript синхронен? .

...