我正在为 Gnome DE 开发简单的扩展,并且在处理异步 Soup 调用和事件循环时遇到了一些麻烦。
这是我所拥有的:
_httpSession = new Soup.Session();
let token = 'sometoken'
let url = 'someurl';
let _allData = [];
let elements = [1,2];
for (let el of elements) {
let message = Soup.form_request_new_from_hash('GET', url + el, { access_token: token });
_httpSession.queue_message(message, () => {
if (message.status_code != Soup.KnownStatusCode.OK) {
_error(message.status_code.toString());
}
try {
message = JSON.parse(message.response_body.data).items;
} catch (e) {
_error(e.toString());
}
_allData = _allData.concat([el, message]);
});
}
鉴于上述 for 循环中的异步调用,如何确保_allData.concat()已针对所有迭代执行?我想打印出_allData变量,但仅在执行每个el的连接时。