gpt4 book ai didi

node.js - 无法从 Node js中的函数中获得 promise

转载 作者:太空宇宙 更新时间:2023-11-04 03:00:24 26 4
gpt4 key购买 nike

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

    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;
});

最佳答案

当您使用 Promise 时,您必须等待它解析,然后才能获取解析值。

有两种方法,要么通过使函数 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;
});

关于node.js - 无法从 Node js中的函数中获得 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58357178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com