请帮助我理解带有 await 关键字的 promise 和异步函数(或进程)的行为

问题描述 投票:0回答:0

目前我正在使用 NodeJS 进行 promises 和 callbacks 的练习。 这是我提供的 2 个代码片段,第一个片段具有正常功能,具有

fs.readFile
(异步),第二个片段具有正常功能,在 Promise 中具有
fs.readFile
(异步)。

如果我执行 code-1 那么输出是:
你好
123

如果我执行代码 2 那么输出是:
123
你好

请帮助我理解这段代码的行为。
谢谢。

代码-1:

    const fs = require("fs");
    
    function a() {
    
      console.log("hi");
    
// let say data in 'read.txt' is "123".
     return fs.readFile("read.txt", (error, data) => {
        if (error) return error;
        console.log(data.toString());
      });
    
      
    }
    
    async function c() {
      await a();
      console.log("hello");
    }
    
    c();

代码2:

    const fs = require("fs");
    
    function a() {
    
      console.log("hi");
    
// let say data in 'read.txt' is "123".
    return new Promise((res, rej) => {
      fs.readFile("read.txt", (error, data) => {
        if (error) rej(error);

        console.log(data.toString());
        res("resolved");
      });
    });
      
    }
    
    async function c() {
      await a();
      console.log("hello");
    }
    
    c();

javascript node.js callback node-modules es6-promise
© www.soinside.com 2019 - 2024. All rights reserved.