Nci*_*fra 5 javascript node.js async-await eslint
我创建了一个异步函数,如下所示:
let createUserWrapper = async function(user){
await Log.createUser(user);
if (!user.registered) {
user.registered = true;
//userToSave has been declared outside of this function's scope
userToSave = true;
}
};
Run Code Online (Sandbox Code Playgroud)
该线user.registered = true;似乎在对象下方显示警告user。我不明白为什么这表明,因为无论上面发生什么,我们都会通过引用传递对象,因此registered当代码继续时我们可以获得键的最新值。
这似乎是误报。ESLint 假设该await Log.createUser(user);行正在操作user对象数据,因此如果我们并行使用另一个与上面类似的异步函数,例如:
let createUserWrapper2 = async function(user){
await Log.createUser2(user);
if (!user.registered) {
user.registered = true;
//userToSave has been declared outside of this function's scope
userToSave = true;
}
};
Run Code Online (Sandbox Code Playgroud)
然后执行:
Promise.all([createUserWrapper(user), createUserWrapper2(user)]).then(() => {
...
});
Run Code Online (Sandbox Code Playgroud)
考虑到 Promise.all() 中的并行执行,两个函数中的 user.registered 的值可能不是来自最新值的值,而是来自“自己的”异步函数的旧值。我仍然认为它有点混乱,并且不能完全指出它应该显示什么,考虑到执行是线性的,并且对象是通过引用传递的,因此每个执行滴答都会有最新的对象数据。
| 归档时间: |
|
| 查看次数: |
8975 次 |
| 最近记录: |