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

Другие вопросы по тегам