模拟⼀种场景,从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);
}
这样?
<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()