Мне нужно получить некоторые данные из ответа grpc и вернуть эти данные.Как я могу ждать, пока данные будут готовы, чтобы запустить остальную часть моего кода и вернуть данные?
Я попытался поместить цикл while, чтобы дождаться ответа функции, но он просто застрял тамнавсегда.Мне нужно либо обновить некоторые глобальные переменные, либо попытаться перехватить ответ из функции requestQueryTreeItemCommand.
Я знаю, что, вероятно, должен использовать какой-то обратный вызов или Promise, но я просто не знаю, как его подключитьк этому коду.
function queryTreeItem(elem) {
var requestQueryTreeItemCommand = new messages.QueryTreeItemRequest();
requestQueryTreeItemCommand.setItem(elem.textContent);
function queriedItemCallbackFunc(err, response) {
if (err) {
console.log(err);
responded = true;
response_str = "";
return response_str;
} else {
responded = true;
response_str = response.getMessage();
return response_str;
}
}
client.queryTreeItem(requestQueryTreeItemCommand, queriedItemCallbackFunc); // Requests stuff and calls queriedItemCallbackFunc when the other side responds back.
// while (!responded) {
// console.log("JS-DEBUG");
// console.log(responded);
// console.log(response_str);
// }
// While loop doesn't work, keeps looping forever.
// Somehow wait for queriedItemCallbackFunc to update the global variable 'response_str',
// or somehow capture the return of queriedItemCallbackFunc and don't use global variables.
responded = false;
return response_str;
}