最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

无法从节点js中的函数获得承诺

运维笔记admin11浏览0评论

无法从节点js中的函数获得承诺

无法从节点js中的函数获得承诺

我正在尝试从我的node函数执行命令,但是我无法从该函数中获得成功,任何人都可以检查我的代码并帮助我解决此问题吗?

    function exec_api() {
        return new Promise( function(resolve){
            const execSync = require('child_process').exec;
            execSync('DB_HOST='+process.env.NODEJS_UNITTEST_DB_HOST+' DB_DATABASE='+process.env.NODEJS_UNITTEST_DB_DATABASE+'  DB_USERNAME='+process.env.NODEJS_UNITTEST_DB_USERNAME+' DB_PASSWORD='+process.env.NODEJS_UNITTEST_DB_PASSWORD+'  PORT='+process.env.NODEJS_UNITTEST_SERVICE_PORT+' sudo nodemon server.js', (err, stdout, stderr) => {
                console.log("sdsdsd23");
                //console.log(`stdout:`+stdout);
                //console.log(`stderr:`+stderr);
                if (err) {
                    resolve(false);
                } else {                
                    resolve(true);
                }
            }); 
        });    
    }

it('Exec API', function() {
    this.timeout(3500);
    return exec_api().should.eventually.be.true;
});
回答如下:

使用承诺时,您必须等待其解决,然后才能获得已解决的值。

有两种方法,可以通过使函数return像这样解决async

it('Exec API', async function() {
    this.timeout(3500);
    const res = await exec_api();
    return res;
});

像这样在回调上使用then方法:

it('Exec API', function() {
    this.timeout(3500);
    let result;
    exec_api().then(res => result = res)
    return result;
});
发布评论

评论列表(0)

  1. 暂无评论