模拟⼀种场景,从A公司获取 原料A,从B公司获取 原料B,原料获取可能失败,两种原料都获取后才能开始⽣产。 在⻚⾯或者控制台上 输出两种原料获取的结果,以及⽣产结果。

模拟⼀种场景,从A公司获取 原料A,从B公司获取 原料B,原料获取可能失败,两种原料都获取后才能开始⽣产。
在⻚⾯或者控制台上 输出两种原料获取的结果,以及⽣产结果。
// 添加记录
function add(data) {
shoppingList.unshift(data);
render(shoppingList); // 修改了数据后调⽤render⽅法渲染
}
// 示例代码
// 获取原料A
function getMaterialA() {
return new Promise(function(resolve, reject) {
setTimeout(() => {
if (Math.random() < 0.3) {
reject()
} else {
resolve()
}
}, 1000);
})
}
// 获取原料B
function getMaterialB() {
return new Promise(function(resolve, reject) {
setTimeout(() => {
// ...
}, 2000);
}

这样?

img

<script>
    // 示例代码
    // 获取原料A
    function getMaterialA() {
        return new Promise(function (resolve, reject) {
            setTimeout(() => {
                if (Math.random() < 0.3) {
                    reject();
                } else {
                    resolve('a')
                }
            }, 1000);
        })
    }
    // 获取原料B
    function getMaterialB() {
        return new Promise(function (resolve, reject) {
            setTimeout(() => {
                if (Math.random() < 0.3) {
                    reject()
                } else {
                    resolve('b')
                }
            }, 2000);
        })
    }
    async function getMaterialAOk() {
        while (1) {
            try {
                var a = await getMaterialA();
                return a;
            }
            catch (e) {
                console.log('get a failure-' + new Date().toLocaleString())
            }
        }
    }
    async function getMaterialBOk() {
        while (1) {
            try {
                var b = await getMaterialB();
                return b;
            }
            catch (e) {
                console.log('get b failure-' + new Date().toLocaleString())
            }
        }
    }
    async function getMaterials() {
        var a = await getMaterialAOk();
        var b = await getMaterialBOk();
        console.log('a,b全部成功获取~');
        console.log(a, b);
        //开始生成的代码。。。
    }
    getMaterials();
</script>

有帮助或启发麻烦点下【采纳该答案】

new Promise.all()