LINUX.ORG.RU

Вопрос по реализации асинхронности

 ,


0

2

Я конечно не знаю, как реализована асинхронность во всех ЯП, но, например, в JS это сделано через коллбэки. Многие жалуются, что код с колбеками трудно читать, ИМХО, эта проблема надумана, вопрос привычки, но дело не в этом. Я вот о чем. В этом коде:

writeSync(readAsync (file))
writeSync("nextStuff")

out:
// huy
// nextStuff
Напечатается х*ня, поскольку, к моменту печати файл еще не прочитан. В JS это решено с помощью коллбеков:
readAsync(file, function(text){writeSync(text)})
writeSync("nextStuff")

out:
// nextStuff
// text_from_file
И вот интересно, почему нельзя реализовать вообще без колбеков, как то так:
writeAsync(readAsync (file))
writeSync("nextStuff")

out:
// nextStuff
// text_from_file
Если так реализовать технически невозможно, то почему? А если возможно, то почему не сделали?

Спасибо.



Последнее исправление: phill (всего исправлений: 1)

ну сделай чтобы readAsync возвращал какой-то promise, а writeAsync понимал его.

dib2 ★★★★★
()
Последнее исправление: dib2 (всего исправлений: 1)

По итогам конкурса, капитанскую фуражку получает переизобретатель промисов и генераторов.

Vit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.