Когда я делаю запрос на сообщение, сервер немедленно реагирует с идентификатором, но фактический результат получен позже через событие Push Server (например, WebSocket или Pusher). < /p>
Вот что я пытаюсь сделать: < /p>
, когда API отвечает с помощью ID, я хочу сразу уведомлять пользователь, что начнутся событие Push. Фактический результат (полученным позже через серверный толчок) и разрешите обещание с этим конечным результатом. < /p>
Задача заключается в том, что я могу вызовать Resolve () только один раз в обещании.function handleAsync(payload, endpoint, callBack) {
return new Promise((resolve, reject) => {
// Step 1: POST call and returns id
callAPI(payload).then((response) => {
if (response.jobId) {
callBack(response.id); // notify caller early
// Wait for server push (via WebSocket or similar) and then resolve
}
});
// Step 2: Push listener will receive final result later and call resolve/reject
// ...
});
}
< /code>
Мне хочется использовать обратный вызов, просто для передачи идентификатор немного хакерский.
Есть ли лучший шаблон для обработки этого случая - может быть, возвращение оба значения более структурированным образом? Например: < /p>
return {
id,
result: new Promise(...),
};
< /code>
Но тогда кажется неловким нарушать единый поток обещаний. < /p>
Вопрос: < /p>
Есть ли чистый, основанный на обещаниях способ вернуть оба: < /p>
Непосредственное значение (ID) и окончательный результат, который разрешается позже (например, с сайта или сервера)? Или использует обратный вызов единственным разумным способом?
Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-promise
Как вернуть как ранний результат, так и окончательный асинхенный результат с использованием обещания? ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
«Как мне вернуть только значение из обещания объекта в моем коде реже? [Дублировать]
Anonymous » » в форуме Javascript - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-