Просмотр полной версии : Возвращение результата вложенной функции.
function call_response(id){
method_call_server(id,function(err,result){
//Возвращает результат функции method_call_server
return result
})
// как вернуть результат функции call_response, не используя передачу функции callback в call_response ?
}
// Как это выглядит в плане
var result = call_response('id');
console.log(result)
Спасибо.
pornoborets
08.06.2015, 13:05
vorTex,
Это невозможно сделать, по всей видимости. Ваш method_call_server -- это асинхронный вызов. В языках, где асинхронность запилена нормально, это делается с помощью futures, и все выхглядит достаточно естественно, например
O := Object clone do(
foo := method(100)
)
aFuture := O @foo // отсылаем асинхронное сообщение
aFuture print // собщение print ждет до тех пор, пока future не превратиться в результат
# ::: 100
В js асинхронные сообщения захардкорены в реализацию byDesign. Это неуклюжее решение, и для его поддержки существуют неуклюжие костыли. Смотрите в сторону promise и, возможно, yield. Promice -- это суррогат future, отличается он тем, что из него данные приходится выдирать явно.
Для асинхронщины использую async/await из ES7, полёт нормальный, код пишется прям как синхронный.
kobezzza
10.06.2015, 09:43
Для асинхронщины использую async/await из ES7, полёт нормальный, код пишется прям как синхронный.
+1
vBulletin® v3.6.7, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot