Отсутствует что-то с пониманием обещаний для процессов линейного кода? - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь понять преимущества обещаний в NodeJS, работая над переписыванием некоторого кода. Мы пытаемся переписать некоторые унаследованные функции с помощью NodeJS, но, похоже, у меня будет

Первое действие - получить значение учетной записи (однако эта функция для получения данных учетной записи возвращает обещание), и большинствопоследующие функции, которые следуют также аналогичным образом, также возвращают обещания, поэтому я должен вложить кучу операторов .then (() => {}) в функцию, которая в конечном итоге выглядит следующим образом:

getAcct().then((account) => {
    // with account update funds...
    account.updateFunds().then((newAcct) => {
        // with newAcct update the value...
        newAcct().updateVal().then((update) => {
            ....... And continue down the same nested .then() path???
        }
    }
}

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

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

ComИсходя из C # (.NET), поэтому трудно понять, как использовать обещания с NodeJS. Но я бы не подумал, что правильное вложение их было бы бесконечно бесконечно глубоким, поэтому подумал, что я буду искать несколько советов, которые помогут.

Любой совет приветствуется. Большое спасибо.

1 Ответ

1 голос
/ 08 октября 2019

Вы можете ожидать своего обещания и сохранять результат в переменной.

const account = await getAcct();

Вам нужно будет запустить ожидание внутри асинхронной функции иКлючевое слово await заставит функцию приостановить выполнение, пока обещание не будет выполнено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...