Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Возвращение результата вложенной функции. (https://javascript.ru/forum/node-js-io-js/56279-vozvrashhenie-rezultata-vlozhennojj-funkcii.html)

vorTex 08.06.2015 12:09

Возвращение результата вложенной функции.
 
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, отличается он тем, что из него данные приходится выдирать явно.

Safort 08.06.2015 20:13

Для асинхронщины использую async/await из ES7, полёт нормальный, код пишется прям как синхронный.

kobezzza 10.06.2015 09:43

Цитата:

Сообщение от Safort (Сообщение 374324)
Для асинхронщины использую async/await из ES7, полёт нормальный, код пишется прям как синхронный.

+1


Часовой пояс GMT +3, время: 04:29.