0
В узле js я использую функцию async для получения результата от другой функции и сохраняю ее как массив и возвращаю результат. Но здесь я получаю пустой json как output {}. См. Комментарии внутри блока кода. Могу ли я узнать, где я ошибаюсь?nodejs async каждая функция
collectSearchResult: function (searchConfig, callback) {
var searchResult = {};
async.each(searchConfig.scope, function (scope, callback) {
var query = {
"query": {
"match": {
"_all": searchConfig.q
}
},
operationPath = scope.url;
this.doSearch(operationPath, query, function (err, results) {
var type = scope.type;
searchResult[type] = results;
// Here i am able to get correct output async
console.log(searchResult);
});
callback();
}.bind(this), function (err) {
// Here it is just returning empty json like {}. this function is called before this.doSearch complete its task
console.log(searchResult);
callback(err, searchResult);
});
}
Почему вы используете привязки повсюду? Что именно вы пытаетесь сделать с этой функцией? Похоже, вы просто хотите запустить запрос и вернуть результат в обратном вызове. – mmilleruva
удалено ненужное связывание. searchConfig.scope - это массив конфигураций. Я вызываю асинхронно, чтобы получить данные из другой функции this.doSearch, которая помогает получать данные с сервера. –
А вот функция doSearch: функция (operationPath, запрос, обратный вызов) { \t \t request.POST ({ \t \t \t URL: rootUrl + operationPath, \t \t \t заголовки: { \t \t \t \t «Содержание -Type ": "приложения/JSON", \t \t \t}, \t \t \t тела: JSON.stringify (запрос) \t \t}, функция (ошибка, отклик) { \t \t var searchResult = response.body; \t \t \t callback (err, searchResult); \t \t}); \t}, –