我正在努力围绕js中的异步和承诺的概念。我无法弄清楚为什么下面的代码不会在我的控制台上打印任何内容。
我假设它是因为我的Promise中的代码不是异步的,但是承诺的意义是什么:使某些同步变得异步?
如果情况并非如此,我怎么能真正改变"不使用任何内置的js函数(setTimeOut等)将同步代码转换为异步?
function countdown(seconds) {
return new Promise(function(resolve, reject) {
for (let i = seconds; i >= 0; i--) {
if (i > 0) console.log(i + '...');
else resolve(console.log("GO!"));
}
}
};
count = countdown(5).then(() => console.log('Completed'), (err) => console.log(err.message));
答案 0 :(得分:2)
它缺少)
,现在可以在添加括号后运行。运行代码片段以检查
function countdown(seconds) {
return new Promise(function(resolve, reject) {
for (let i = seconds; i >= 0; i--) {
if (i > 0) console.log(i + '...');
else resolve(console.log("GO!"));
}
}) // <---⚠️ I mean this parenthesis
};
count = countdown(5).then(() => console.log('Completed'), (err) => console.log(err.message));
答案 1 :(得分:2)
如何在不使用任何内置js函数(setTimeOut等)的情况下将同步代码真正“转换”为异步?
就其本质而言,javascript代码是同步的 (等待抗议的嚎叫减弱) ......
异步的每个(非本机)函数都是由该函数引起的,