javascript - 是否可以同步实现使用非阻塞 setTimeout 的函数?
问题描述
我想知道是否可以同时调用这 2 个 IIF,它们最终会产生类似的结果?
######
#####
####
###
##
#
#
##
###
####
#####
###### ?
下面的函数会延迟控制台日志。这个想法是用一些延迟逐行控制台日志。
(function whileLoop(n) {
setTimeout(function () {
let hashArr = Array.apply(null, Array(n)).map(() => {
return hashSymbol
});
console.log(hashArr);
if (--n) whileLoop(n);
}, 2000)
})(6);
(function whileLoop(n, m) {
setTimeout(function () {
let hashArr = Array.apply(null, Array(n)).map(() => {
return hashSymbol
});
console.log(hashArr);
if (n < m) {
++n;
whileLoop(n, m);
}
}, 2000)
})(1, 6);
解决方案
为了让您一一显示,您需要使用async
await
. 请在此处查看:https ://javascript.info/async-await
const row = 6;
(async() => {
for (let r = 1;r < row * 2; r++) {
await displayAsync('#'.repeat((r >= 7 ? (r % 6) : row - r ) + 1));
}
})();
function displayAsync(str) {
return new Promise((resolve, reject) => {
setTimeout(()=> {
console.log(str);
resolve(null);
}, 1000);
});
}
推荐阅读
- groovy - 在groovy中转义特殊字符
- python-3.x - 现在已弃用的 gtk.gdk.get_default_root_window().get_pointer() 的替代品是什么
- amazon-web-services - 如何将 AWS SES 电子邮件发送到已验证的同一域
- excel - 将日期从用户表单传输到数据库(包括日期名称)
- android - 找不到adb,但我真的找了好久
- javascript - 不知道为什么我不能让 javascript 显示计算的答案
- android - 设置 HERE 地图样式时如何改善色彩再现?
- r - R ggbiplot 安装错误
- heroku - 我可以在 Heroku 中恢复数据吗
- r - R Shiny - 按下操作按钮后在数据表中保存函数值