小编Dar*_*uct的帖子

限制并发并等待所有承诺完成,即使有些承诺拒绝

我的问题基本上是一个组合

我知道Promise.allSettled,但我未能找到限制并发的好方法。

到目前为止我所拥有的:

想法1使用p-limit

const pLimit = require('p-limit');
const limit = pLimit(10);

let promises = files.map(pair => {
    var formData = {
        'file1': fs.createReadStream(pair[0]),
        'file2': fs.createReadStream(pair[1])
    };
        
    return limit(() => uploadForm(formData));
});
    
(async () => {
    const result = await Promise.allSettled(promises).then(body => {
        body.forEach(value => {
            if(value.status == "rejected")
                file.write(value.reason + '\n---\n');
        });
    });
})();
Run Code Online (Sandbox Code Playgroud)

我对这个解决方案的问题是,我必须首先创建所有承诺,并为此为每个承诺打开两个文件流,并且我将达到打开文件的限制。

想法 2使用p-queue:我尝试使用生成器函数在queue.on 'next'事件中创建和添加新的承诺,但我无法让它正常工作,这可能不是适合这项工作的工具。

使用 PromisePool 的想法 3:一开始这看起来很有希望。其中一些支持生成器函数来为池创建承诺,但我找不到一个明确声明其行为类似于Promise.allSettled.

我实施es6-promise-pool …

javascript concurrency node.js promise

6
推荐指数
1
解决办法
5392
查看次数

使用 QStyledItemDelegate 子类在 QTableView 中创建按钮

我有完全相同的问题,但我将使用 QTableView 小部件。我读了这篇文章,想知道是否可以覆盖 createEditor 函数以使用例如 QFileDialog 来获取新数据。

如果这是可能的,任何人都可以为我提供一个示例来实现 QItemDelegate 的子类。

如果没有,任何人都可以向我提供一个示例来实现 QItemDelegate 的子类,女巫可以在 QLineEdit 旁边绘制一个按钮以获取此处的功能。

编辑:也许这个问题真的很愚蠢,我没有意识到,因为我离开了这个项目大约半年。

第二:从Qt 5.7升级到5.8安全吗?

qt qtableview qitemdelegate

3
推荐指数
1
解决办法
6016
查看次数