【发布时间】:2018-12-23 09:41:18
【问题描述】:
我正在努力解决 JS 异步问题,并且正在努力解决以下面试练习问题,你们中的一些人可能会对此有所了解。
鉴于以下提供的功能(我们不允许更改):
function processAction(i, callback) {
setTimeout(function() {
callback("Processed Action " + i);
}, Math.floor(Math.random()*1000));
}
编写函数triggerActions(count)(必须调用proccessAction)和callback(message)函数,以便triggerActions(3)记录以下内容:
Processed Action 1
Processed Action 2
Processed Action 3
在不更改processAction 函数的情况下,我无法弄清楚如何让我的操作按照它们开始时的顺序登录。我也不确定如何实现一个允许我对任意数量的操作执行此操作的函数。我设法最接近正确功能的方法如下所示:
const printString = (x) => {
return new Promise((resolve, reject) => {
let time = Math.floor(Math.random()*1000);
setTimeout(() => {
console.log(`${x} is resolved after ${time}.`);
resolve();
}, time);
});
}
async function printAsync() {
await printString('a');
await printString('b');
await printString('c');
};
产生:
a is resolved after 431.
b is resolved after 149.
c is resolved after 798.
目前参考的资源:
【问题讨论】:
标签: javascript asynchronous callback promise