Javascript V8中的垃圾收集器在分配给新对象(浅拷贝)时如何处理承诺?
我面临内存泄漏问题,最近开始调试,解决了一些问题。但我似乎更关心对象引用和垃圾收集,在上面的代码示例中,Javascript V8中的垃圾收集器在分配给新对象(浅拷贝)时如何处理承诺?,javascript,node.js,promise,garbage-collection,sequelize.js,Javascript,Node.js,Promise,Garbage Collection,Sequelize.js,我面临内存泄漏问题,最近开始调试,解决了一些问题。但我似乎更关心对象引用和垃圾收集,在上面的代码示例中,SomeModel.findOne返回一个承诺,我将该承诺分配给一个新对象(浅拷贝)appLogin。我该不该把这个承诺复制下来?对于新对象的承诺引用非常困惑,垃圾收集器在转到下一个.then()之后会将该承诺视为垃圾吗?提前感谢。:) 分配不会导致进行浅拷贝。另外,无论是login还是appLogin都不是承诺。这两个都是对SomeModel.findOne()返回的Promise所传递的对
SomeModel.findOne
返回一个承诺,我将该承诺分配给一个新对象(浅拷贝)appLogin
。我该不该把这个承诺复制下来?对于新对象的承诺引用非常困惑,垃圾收集器在转到下一个.then()之后会将该承诺视为垃圾吗?提前感谢。:) 分配不会导致进行浅拷贝。另外,无论是login
还是appLogin
都不是承诺。这两个都是对SomeModel.findOne()返回的Promise所传递的对象的引用。是的,这些都不是Promise,但我应该关心垃圾收集过程的引用吗?嗯,有些人更有资格回答,但据我所知,这里应该没有内存泄漏。如果有,那么即使不是大多数,也会有很多承诺链出现漏洞。
let appLogin = null;
SomeModel.findOne({
where: {id: req.user.id},
attributes: ["id","property_id"],
raw: true,
})
.then((login) => {
if(!login){
throw new CustomErrors.InvalidToken("ER401");
}
appLogin = login; return null;
}
.then((nullRecieved) => {
console.log(appLogin)
})
.catch((error) => {console.log(error)})