gpt4 book ai didi

javascript - 链接后续的 promise 并等待所有解决

转载 作者:行者123 更新时间:2023-11-30 08:40:59 28 4
gpt4 key购买 nike

我已经阅读了一些关于 promises 的文章和问题,但我仍然无法理解它们。这是我想要做的:

我的应用程序应该从设备请求属性。这些属性可以表示为单个值或数组。每个属性都有属性,可以为我提供有关它的信息(比如它是数组、是否可写等)。

所以我的第一次尝试是先读取属性的属性。这样我就可以查看是否需要读取单个值或数组(例如)。

一切都在使用 websockets,所以我没有使用 angulars $http 服务。

var valueRequests = [];

angular.forEach(properties, function (property, key) {

requestPropertyAttributes(property).then(function (result) {

if (result.isList) {

valueRequests.push(requestPropertyList(property));
}
else {

valueRequests.push(requestPropertyValue(property));
}
});
});

$q.all(valueRequests).then(function () {

//do sth. after all data was read
});

好吧,我得到的只是一些错误(它读取列表,其中有值和/或反之亦然)并且 $q.all() 没有触发。

我的请求函数正在返回 promise 。

这是正确的尝试还是我在某处失败了?如前所述,我对 promises 不是很确定,所以我可能无法理解这里的机制。

感谢您的帮助:)

最佳答案

您需要在第一个 then 中返回内部 promise ,然后将该 promise 添加到列表中。

var valueRequests = [];

angular.forEach(properties, function (property, key) {

valueRequests.push(requestPropertyAttributes(property).then(function (result) {

if (result.isList) {

return requestPropertyList(property);
}
else {

return requestPropertyValue(property);
}
}));
});

$q.all(valueRequests).then(function () {

//do sth. after all data was read
});

关于javascript - 链接后续的 promise 并等待所有解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26362295/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com