Вход

Просмотр полной версии : Возвращение результата вложенной функции.


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
Для асинхронщины использую async/await из ES7, полёт нормальный, код пишется прям как синхронный.

+1