Edge.Js: Как выполнить несколько обратных вызовов в nodejs
У меня есть приложение.Net, которое выполняет JavaScript с использованием EdgeJs. Скрипт js выполняет некоторую логику и получает некоторые данные, затем он должен вернуть данные обратно в приложение.Net. Может быть много данных, поэтому я хочу передать их обратно в приложение.Net порциями.
Мое приложение.Net:
private async Task<Object> CallNodeFunction(Object input)
{
ExceptionDispatchInfo capturedException = null;
try
{
var func = Edge.Func(JSFunction);
var data= await func(input);
return data;
}
catch (Exception ex)
{
// sophisticated error handling
}
return null;
}
По сути, я хочу сделать что-то подобное (простой пример):
function start(params, callback) {
getTheData(params).then(function (response) { callback(null, response); }); // Chunk 1
getTheData(params).then(function (response) { callback(null, response); }); // Chunk 2
getTheData(params).then(function (response) { callback(null, response); }); // Chunk 3
}
как видите, я выполняю обратный вызов 3 раза, но не могу найти способ заставить Edge.J обрабатывать все 3 ответа.
Есть идеи?
Благодарю.
1 ответ
.net является синхронным, поэтому он будет вызывать функцию вашего узла только один раз, а затем он перейдет к следующей строке, и функция вашего узла больше не будет вызываться.
Но, как вы упомянули, вы хотите получать данные в чанках, поэтому вам придется применить эту логику чанкинга в вашем.net-коде и передать смещение в качестве параметра функции узла, чтобы узел извлекал следующий чанк на основе на смещение и передать данные еще раз.