我如何依次执行Node JS函数

编程入门 行业动态 更新时间:2024-10-10 11:29:47

我如何依次执行Node JS<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数"/>

我如何依次执行Node JS函数

我的路线中有多个功能,并且想要执行这些功能,例如,仅在成功执行前一个功能的情况下,控件才应移至下一个功能。例如,请参见下面的代码,我希望先执行task1,然后执行任务2,依此类推。设置超时或等待似乎不是一种有效的方法,我是否需要添加异步功能或类似功能?

Code.js

   var task1 = cp.exec('docker images', function (error, stdout, stderr) {
        console.log('Version: ' +version);
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
            console.log('exec error: ' + error);
        }
    });    


    var task2 = cp.exec('docker pull mongo:'+version, function (error, stdout, stderr) {
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
            console.log('exec error: ' + error);
        }
    });


    var task3 = cp.exec('docker run -d -p '+port2+':27017 -v '+volumeLoc+' --name '+containerName+' mongo:'+version, function (error, stdout, stderr) {
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
            console.log('exec error: ' + error);
        }
    });


    var task4 = cp.exec('docker ps | grep mongo', function (error, stdout, stderr) {
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
            console.log('exec error: ' + error);
        }
    });
回答如下:

首先将每个任务转换为可返回承诺的函数:

function task1() {
    let resolve, reject;
    const promise = new Promise((rs, rj) => { resolve = rs; reject = rj; });
    cp.exec('docker images', function (error, stdout, stderr) {
        console.log('Version: ' +version);
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
             console.log('exec error: ' + error);
             reject(error);
        } else {
             resolve();
        }
    });
    return promise;
}

然后将它们全部包装在异步函数中:

async function main() {
    try {
        await task1();
        await task2();
    } catch (err) {
        // handle error here
    }
}

更多推荐

我如何依次执行Node JS函数

本文发布于:2024-05-07 07:01:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754989.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   Node   JS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!