Javascript承诺和异步代码

Javascript承诺和异步代码,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我正在努力理解js中异步和承诺的概念。我不明白为什么下面的代码没有在我的控制台上打印任何东西 我假设这是因为我的承诺中的代码不是异步的,但这不是承诺的重点:让同步的东西变成异步的吗 如果不是这样的话,我怎么能在不使用任何内置js函数(setTimeOut等)的情况下将同步代码真正“转换”为异步代码呢 它丢失了),在添加括号后现在可以工作了。。运行代码段进行检查 功能倒计时(秒){ 返回新承诺(功能(解决、拒绝){ for(设i=s;i>=0;i--){ 如果(i>0)console.log(i

我正在努力理解js中异步和承诺的概念。我不明白为什么下面的代码没有在我的控制台上打印任何东西

我假设这是因为我的承诺中的代码不是异步的,但这不是承诺的重点:让同步的东西变成异步的吗

如果不是这样的话,我怎么能在不使用任何内置js函数(setTimeOut等)的情况下将同步代码真正“转换”为异步代码呢

它丢失了
,在添加括号后现在可以工作了。。运行代码段进行检查

功能倒计时(秒){
返回新承诺(功能(解决、拒绝){
for(设i=s;i>=0;i--){
如果(i>0)console.log(i+'…');
else解析(console.log(“GO!”);
}
})//console.log('Completed'),(err)=>console.log(err.message));
它缺少
,添加括号后现在可以工作。.运行代码段进行检查

功能倒计时(秒){
返回新承诺(功能(解决、拒绝){
for(设i=s;i>=0;i--){
如果(i>0)console.log(i+'…');
else解析(console.log(“GO!”);
}
})//console.log('Completed'),(err)=>console.log(err.message));
我怎样才能在不使用任何内置js函数(setTimeOut等)的情况下将同步代码真正“转换”为异步代码

从本质上讲,javascript代码是同步的(等待抗议声减弱)

每个异步(非本机)函数都是该函数的结果

  • 直接调用其中一个本机异步函数,或
  • 调用调用最终直接调用其中一个异步函数的函数等的其他函数
  • 将某些代码从同步转换为异步的唯一方法是使用许多本质上是异步的“本机”函数中的一个(同样,可以直接,也可以通过最终必须直接调用其中一个异步函数的其他函数间接)

    我怎样才能在不使用任何内置js函数(setTimeOut等)的情况下将同步代码真正“转换”为异步代码

    从本质上讲,javascript代码是同步的(等待抗议声减弱)

    每个异步(非本机)函数都是该函数的结果

  • 直接调用其中一个本机异步函数,或
  • 调用调用最终直接调用其中一个异步函数的函数等的其他函数

  • 将某些代码从同步转换为异步的唯一方法是使用许多本质上是异步的“本机”函数中的一个(同样,可以直接,也可以通过最终必须直接调用其中一个异步函数的其他函数间接)

    我真的为你感到高兴..写有趣的答案很好.你为什么要通过提供答案来鼓吹这样可笑的代码:pI我真的为你感到高兴..写有趣的答案很好.你为什么要通过提供答案来鼓吹这样可笑的代码:p“这不是承诺的要点吗:让同步的东西变成异步的?"不,绝对不是。这是为了通过将异步处理作为可返回值来简化异步处理。在您的示例中,您有一个同步循环,没有理由在这里使用承诺。
    我不明白为什么下面的代码没有在我的控制台上打印任何内容
    -什么?甚至没有关于e缺少
    ?请使用更好的浏览器,因为javascript本质上是同步的(等待抗议声减弱)…任何异步(非本机)函数都是由该函数直接或间接调用“本机”函数之一引起的异步函数——因此——将某些代码从同步转换为异步的唯一方法是使用许多本质上是异步的“本机”函数中的一个(同样,可以直接,也可以通过最终必须直接调用其中一个异步函数的其他函数间接)我明白了。现在我越来越清楚了。谢谢!“这不是承诺的重点:让同步的东西变成异步的吗?”不,绝对不是。这是为了通过将异步处理作为可返回值来简化异步处理。在您的示例中,您有一个同步循环,没有理由在这里使用承诺。
    我不明白为什么下面的代码没有在我的控制台上打印任何内容
    -什么?甚至没有关于e缺少
    ?请使用更好的浏览器,因为javascript本质上是同步的(等待抗议声减弱)…任何异步(非本机)函数都是由该函数直接或间接调用“本机”函数之一引起的异步函数——因此——将某些代码从同步转换为异步的唯一方法是使用许多本质上是异步的“本机”函数中的一个(同样,可以直接,也可以通过最终必须直接调用其中一个异步函数的其他函数间接)我明白了。现在我越来越清楚了。谢谢!
    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));