пламени оповещенияКак явно завершить обещание в Node.js
Это так просто: Я супер знакомы с Java completable фьючерсов:
CompleteableFuture f = CompleteableFuture.supplyAsync(() -> "Hello").thenApply(s -> s.concat(" world"))
Этот код может сопровождаться:
CompleteableFuture word1 = f.thenApply(s -> s + " I am a completable future"); // "Hello world I am a completable future"
CompleteableFuture word2 = f.thenApply(s -> s + " I am teapot"); // "Hello world I am a teapot"
// option 1 (non blocking):
word1.thenAccept(System.out::println);
// option 2 (Blocking)
System.out.println(word1.get());
Сейчас в Node.js:
const f = new Promise((resolve,reject) => {
return resolve('Hello')
}).then(s => " world")
const word1 = f.then(s => s + ' I am a promise') // 'Hello world I am a promise'
const word2 = f.then(s => s + ' I am a teapot') // 'Hello world I am a teapot'
// option 1 (non blocking)
word1.then(console.log)
// option 2 (Blocking)
console.log(word1.???????)
Где эта опция 2 для узла js? Без этого я вынужден создать закрытие для обновления простого значения вместо возврата.
Я бы предпочел, чтобы кто-то сказал: «Вы не знаете, что вы говорите», и покажите мне, затем позвольте моему невежеству упорствовать.
У node.js нет способа сделать неблокирующую асинхронную операцию suddently становиться блокирующей и синхронной. Это не так. Это среда, управляемая событиями, где почти все операции ввода-вывода не блокируются и асинхронны. Чтобы использовать среду node.js, как вы ее программируете. И, по спецификации 'p.then()' всегда async. Обработчик '.then()' всегда будет вызываться на какой-либо будущий тик цикла событий, даже если 'p' уже разрешен. – jfriend00