我不太了解这种异步性质

Rod*_*Rod 2 javascript node.js

鉴于下面的结果,我期待working出现在beginend线之间.

规则:

有没有办法让它工作而不改变app.js文件?

app.js

const service = require('./service');

console.log('*********** begin ***********');

(async () => {
    const results = await service.init();
})();

console.log('*********** end ***********');
Run Code Online (Sandbox Code Playgroud)

service.js

exports.init = () => {
    return new Promise((reject, resolve) => {
        setTimeout(() => {
            console.log('working...');
        }, 2000);
    });
};
Run Code Online (Sandbox Code Playgroud)

结果:

C:\code\practice\promise-exercise2>node index.js
*********** begin ***********
*********** end ***********
working...
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

app.js呼吁双方console.log('begin')console.log('end') 同步,同时working异步的.我想你可以通过改变同步service.js打印来改变它,但这可能与你的用例不符.所以,没有改变就不可能实现.working app.js

如果您想要这样的东西,您可以end 以下内容async之后放入函数内部await:

console.log('*********** begin ***********');
(async () => {
  const results = await service.init();
  console.log('*********** end ***********');
})();
Run Code Online (Sandbox Code Playgroud)