NodeJS 我怎样才能按顺序运行我的函数

vql8enpb  于 2022-11-29  发布在  Node.js
关注(0)|答案(2)|浏览(220)
function Getir() {
    var options =
    {
        host: 'example',
        port: 443,
        path: '/myUrl'
    };

    get(options, function (http_res) {
        var data = "";

        http_res.on("data", function (chunk) {

            data += chunk;
        });

        
        http_res.on("end", function () {
            
            writeFile('NewHtml.txt', `${data}`, 'utf8', (err) => {
                if (err) console.log(err);
            });
        });
    });
}

function DegistirDuzenle() {
    if (existsSync("./DatabaseHtml.txt")) {

        var DataBaseHtml = readFileSync("./DatabaseHtml.txt", 'utf-8', (err) => { if (err) console.log(err) });
        var MyHtml = readFileSync("./NewHtml.txt", 'utf-8', (err) => {if (err) console.log(err) });

        if (MyHtml == DataBaseHtml) {
            unlink("./NewHtml.txt", (err)=>{ if(err) console.log(err)});
            console.log("değişiklik yapılmadı");
        } else {
            //notification

            console.log("değişiklik yapıldı");

            //Change
            unlink('./DatabaseHtml.txt', (err) => { if(err) console.log(err); });
            writeFile('./DatabaseHtml.txt', `${MyHtml}`, 'utf-8', (err) => { if(err) console.log(err); });
            unlink('./NewHtml.txt', (err) => { if(err) console.log(err); });
        }

    }
    else {
        writeFile('DatabaseHtml.txt', `NewDataBaseHtml`, 'utf8', (err) => {
            if (err) console.log(err);
        });
    }
}

async function Mysystem() {
    let mypromis = new Promise((resolve, reject)=>{
        resolve(Getir());
    });
    await mypromis.then(DegistirDuzenle());
}
Mysystem();

我想创建一个txt文件,读取它,并删除它以后。我有2个函数1。(Getir())创建txt,2。(DegistirDuzenle())读取txt和删除,但2。函数开始工作,我得到错误。“错误:ENOENT:没有这样的文件或目录,打开'./NewHtml.txt'“

58wvjzkj

58wvjzkj1#

async function Mysystem() {
    let mypromis = new Promise((resolve, reject)=>{
        resolve(Getir());
    });
    await mypromis()
    await DegistirDuzenle()
}

Mysystem()
mcdcgff0

mcdcgff02#

您应该使用

async function Mysystem() {
    await Getir();
    await DegistirDuzenle();
}

function Mysystem() {
    return Getir().then(DegistirDuzenle);
}

但不能混合使用它们。还要注意,当将DegistirDuzenle函数作为回调传递给.then()时,它不应该被调用(传递调用的结果,而不是传递函数)。
此外,要使其工作,您需要正确地promisifyGetirDegistirDuzenle中的代码。

相关问题