【发布时间】:2018-04-16 23:43:45
【问题描述】:
我正在使用 Nightwatch.js,最近我发现了代码的一个有趣行为。
我试图用来自 JS6 的 async/await 命令替换回调结构。
最初
最初我是从这段代码开始的。它检查浏览器窗口中是否有 2 个选项卡。
# main.js
client.windowHandles((result) => {
client.verify.equal(result.value.length, 2);
});
工作代码
我将其替换为:
# main.js
const { assignVariable } = require("../../utils/callbacks");
let windows = {};
await client.windowHandles(assignVariable(windows));
client.verify.equal(windows.value.length, 2);
assignVariable 是:
# callbacks.js
const assignVariable = (variable) => {
return (result) => {
variable.value = result.value;
};
};
module.exports = { assignVariable };
这段代码有效。
无效的代码
当我想将 assignVariable 更改为:
时发生了奇怪的事情# callbacks.js
const assignVariable = (variable) => {
return (result) => {
variable = result;
};
};
module.exports = { assignVariable };
问题
那么 assingVariable 似乎根本没有影响。 我正在调试这些行,并且执行了 assignVariable 中的赋值,但是当我们回到 main 时,对象 windows 仍然等于 {} .js.
希望我已经解释清楚了。
附:这是我在 StackOverflow 中的第一个问题,所以请耐心等待。 :)
【问题讨论】:
标签: javascript asynchronous async-await nightwatch.js object-property