javascript - promise 以不同的方式执行时显示不同的结果

标签 javascript node.js callback promise

为了在最近深入了解 Node 之后进行实验,我编写了一个简单的 Promise 代码,然后从命令行执行它。我看到两种输出。这是我的代码:

function doWork(){
    return new Promise(function(resolve,reject){
        setTimeout(function(){
            console.log('done!');
            resolve();
        }, 1000);
    });
}

然后:

   1. doWork().then(function(){
        return doWork();
    }).then(function(){
        console.log('that\'s it');
    });

Output :

 done!
 done!
 that's it!

另一种方式:

2. doWork().then(function(){
            doWork();
        }).then(function(){
            console.log('that\'s it');
        });

Output: 

done!
that's it!
done!

为什么当我不返回返回时输出会发生变化?

最佳答案

Promise 通过返回值起作用。当您不返回时,链不知道在继续处理链中的下一个处理程序之前要等待第二个doWork

关于javascript - promise 以不同的方式执行时显示不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34045848/

相关文章:

javascript - 通过GET请求向express server请求数据返回的是document而不是data

node.js - Vue 仓库 "Module build failed: Error: No ESLint configuration found"

javascript - 将附加参数传递给过滤器回调 D3 和 javascript

javascript - Materialise: "if"语句中的下拉菜单不起作用

javascript - 如何使用 javaScript 获取元素(不是像素)的 % 高度?

sockets - NodeJS : What is the proper way to handling TCP socket streams ? 我应该使用哪个定界符?

c++ - 将 CALLBACK 从 dll 传递到 EXE

python - 创建一个每 n 个周期激活一次的 Keras 回调

javascript - 具有 2 个数组的对象

javascript - 如何在不使用 javascript 中的 activex 的情况下从客户端获取文件大小?