gpt4 book ai didi

node.js - 使用 Promise.allSettled() 执行一批 Promise

转载 作者:行者123 更新时间:2023-12-02 16:47:53 34 4
gpt4 key购买 nike

在 Node v10.15.1 中,我尝试使用 Promise.allSettled() 批量执行 Promise,但它抛出一个错误

TypeError: Promise.allSettled is not a function

Promise.all() 是否返回一个 promise ?

下面的Main函数返回一个对象。其他函数使用一些 Promise 来创建其“子对象”。

为什么我需要“批量 promise ”:要创建子对象,必须解决所有必需的 promise 。但并非“主对象”中需要所有子对象。

const path = require('path');
const os = require('os');
const si = require('systeminformation');

function getFoo() {
// all these promises have to be settled to construct the sub-object
return Promise.all([si.system(), si.chassis()]).then(([system, chassis]) => {
return { /* hidden for brevity : use system and chassis to return a single object */ };
})
.catch(ex => { /* hidden for brevity */ });
}

function getBar() {
// all these promises have to be settled to construct the sub-object
return Promise.all([si.osInfo(), si.uuid()]).then(([osInfo, uuid]) => {
return { /* hidden for brevity : use osInfo and uuid to return a single object */ };
})
.catch(ex => { /* hidden for brevity */ });
}

function getBaz() {
// all these promises have to be settled to construct the sub-object
return Promise.all([os.networkInterfaces(), si.networkInterfaceDefault()]).then(([interfaces, defaultInterface]) => {
return { /* hidden for brevity : use interfaces and defaultInterface to return a single object */ };
})
.catch(ex => { /* hidden for brevity */ });
}

function Main() {
// some of these promises can be rejected
Promise.allSettled([ getFoo(), getBar(), getBaz() ])
.then(([foo, bar, baz]) => {
return { foo, bar, baz }
})
.catch(ex => { /* hidden for brevity */ });
}

Main();

预期对象的一个​​示例

{
foo: {
prop: 'example',
someOtherProps: 'We are there!'
},
baz: {
test: 50
}
}

最佳答案

关于node.js - 使用 Promise.allSettled() 执行一批 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576249/

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