更新状态后解决承诺的正确方法?

时间:2019-07-05 18:25:37

标签: reactjs

我正在尝试将状态项同步添加到数组中,但是仅最后一项被添加。我认为这是因为状态是在每个“更新”调用中被读取之前被更新的,这是一个典型的竞赛条件问题。处理此操作的常规方法是什么?我正在使用React Hooks,而setIndepAttributes来自useState。

    async function onFilesAdded(e) {
        ...
    for(var i = 0; i < atts.length; i++) {
        await addAtt(atts[i]);
    }
        ...
    async function addAtt(att) {
        return new Promise(async function(resolve, reject) {
            await props.addIndependentAttribute(att);
            resolve("done");
        });
    }
    function addIndependentAttribute(att) {
        return new Promise(async function(resolve, reject) {
            await setIndepAttributes([...indepAttributes, att]);
            resolve("done");
        });
    }

0 个答案:

没有答案