将值设置为异步块中的变量

时间:2019-08-15 07:54:32

标签: node.js

以下是nodejs脚本的一部分。

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


fs.writeFile( filepath, dom.window.document.querySelectorAll("note")[i].textContent, function(err) {
            if(err) { return console.log(err); }
});

const text_content = dom.window.document.querySelectorAll("note")[i].textContent ; 

async function exec_python3() {
  const { stdout, stderr } = await exec(`bash -c 'python3 ${filepath}'`);
  text_content = stdout ; 
}

exec_python3() ; 

dom.window.document.querySelectorAll("note")[i].textContent是一个jsdom对象。

我要做的是将dom.window.document.querySelectorAll("note")[i].textContent中的内容替换为已执行的Python3的标准输出。 例如,当前dom.window.document.querySelectorAll("note")[i].textContent的值为print("foo"),并且在foo之后的值为exec_python3() ;

但是上述脚本发生错误Assignment to constant variable.。我不知道该怎么办,知道吗?谢谢。

1 个答案:

答案 0 :(得分:0)

如果您想更改dom.window.document.querySelectorAll("note")[i].textContent,则需要更改那个

将其值复制到变量,然后更改该变量的值不会触及dom.window.document.querySelectorAll("note")[i].textContent

所以:

dom.window.document.querySelectorAll("note")[i].textContent = stdout;

对于您的错误,在修复它并不能解决问题时,使用const entire 要点是您只设置了一次,然后就无法更改。如果您想更改变量,请使用let