节点js:我得到一个(子)ecec的输出并设置一个变量被重新调用?

我一直在寻找一个真正的例子,但我找不到任何。我完全陌生的节点js。节点js:我得到一个(子)ecec的输出并设置一个变量被重新调用?

我正在设置一个服务,它使用命令行工具获取密码。

命令行“pw get key”返回与密钥关联的密码。 命令行“pw set key password”设置与密钥关联的密码。

的部分代码,我至今是:

const util = require('util'); 

const exec = util.promisify(require('child_process').exec);

async function cmdPwGet(key) {

const { stdout, stderr } = await exec(`pw get ${key}`);

console.log('stdout:', stdout);

console.log('stderr:', stderr);

}

async function cmdPwPut(key, passwd) {

const { stdout, stderr } = await exec(`pw set ${key} ${passwd}`);

console.log('stdout:', stdout);

console.log('stderr:', stderr);

}

class PwService {

constructor (KEY){

this.basekey = KEY;

this.pwd = "";

}

setPw (key, passwd) {

key = this.basekey + "." + key;

var res = cmdPwPut(key, passwd);

/* missing bits */

}

getPw (key) {

key = this.basekey + "." + key;

var res = cmdPwGet(key);

/* missing bit */

}

}

module.exports = PwService;

这会testcafe环境内使用。在这里我定义一个角色。

testRole() { 

let pwService = new PwService('a-key-');

let pw = pwService.getPw('testPW');

//console.log('pw: '+pw)

return Role('https://www.example.com/', async t => {

await t

.typeText(this.firstInput, 'testPW')

.typeText(this.secondInput, pw<??>)

.click(this.selectButton);

}, { preserveUrl: true });

}

如果我使用文字字符串作为pw,testcafe代码将起作用。

/缺失位 /留空,因为我尝试了许多不同的事情,但没有人工作!

我想我可以使它与孩子的* Sync版本一起工作。但是,因为这是可以并行运行的testcafe,所以我更喜欢异步版本。

有什么建议吗?我知道这是真的了解node.js中的承诺等,但我无法解决这个问题。

它似乎应该是node.js专家的标准练习。

回答:

异步/等待只是使异步代码看起来像同步代码,你的代码仍然执行异步。 Async \ Await函数cmdPwGet的返回结果是Promise,而不是您认为的password

cmdPwGet执行结果是一个承诺

async function cmdPwGet(key) { 

const { stdout, stderr } = await exec(`pw get ${key}`);

return stdout;

}

使getPw异步/等待

async getPw(key) { 

key = this.basekey + "." + key;

var res = await cmdPwGet(key);

return res;

}

得到密码

testRole() { 

let pwService = new PwService('a-key-');

return Role('https://www.example.com/', async t => {

// get your password with await

let pw = await pwService.getPw('testPW');

await t

.typeText(this.firstInput, 'testPW')

.typeText(this.secondInput, pw<??>)

.click(this.selectButton);

}, { preserveUrl: true });

}

以上是 节点js:我得到一个(子)ecec的输出并设置一个变量被重新调用? 的全部内容, 来源链接: utcz.com/qa/258701.html

回到顶部