Существует ли современный подход к вызову функции, который поддерживает синхронный и асинхронный режимы выполнения в Javascript? - PullRequest
0 голосов
/ 24 октября 2018

Я делаю программу на JavaScript с API.В настоящее время этот API работает с обратными вызовами и поддерживает как синхронные, так и асинхронные модели выполнения.

Пример вызова API:

API.getInfo((err, info) => {
    if(err) return processError(err);
    doSomethingUseful(info);
})

У меня есть два исполнителя API - локальный и удаленный.

Пример локального исполнителя:

state.info = {...};
API.getInfo = (cb) => cb(null, clone(state.info));

Пример удаленного исполнителя:

API.getInfo = (cb) => doGet('/info').then(info => cb(null, info), cb)
// express transforms this query to local executor and returns answer

Хитрость заключается в том, что API может вызывать себя так:

API.getOtherInfo = (cb) => {
    let part1, part2;
    API.getPart1((err, data) => part1 = data);
    API.getPart2((err, data) => part2 = data);
    cb(null, {part1, part2})
}

В этом случаеэто синхронизация, и я хочу, чтобы она была синхронизированной.

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

Итак, теперь я хочу использовать современный javascript, но, к сожалению, обещания по определению асинхронны.Существует ли современный подход javascript для синхронизации и асинхронного выполнения, кроме обратных вызовов?

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