【发布时间】:2020-12-13 19:36:54
【问题描述】:
我正在开发一个需要访问 Google Chrome cookie 的本地 Node.js 应用程序。我发现 chrome-cookies-secure 库似乎可以完成这项工作,但我就是不知道下面的代码有什么问题。
const chrome = require('chrome-cookies-secure');
const domains = [
"google.com"
];
const resolveCookies = async () => {
let result = [];
for(domain of domains) {
await chrome.getCookies(`https://${domain}/`, (err, cookies) => {
result.push(cookies);
// console.log(cookies); //? This is going to correctly print the results
})
}
return result;
}
const final = resolveCookies();
console.log(final); //! This is going to return a Promise { <pending> } object
我的想法是我只想将来自所有域的 cookie 存储在一个列表中,但无论如何我都无法解决 Promise。 我没有看到任何有关此模块的异步调用的示例,但如果我不使用它,它将在脚本执行后返回一个空列表。
我的节点版本:v14.4.0
我做错了什么?
【问题讨论】:
-
resolveCookies返回数组的 promise -async函数 always 返回一个promise。试试resolveCookies.then((final) => console.log(final))。 -
@jonrsharpe 感谢您的建议,但我回复了
TypeError: resolveCookies.then is not a function。 -
对不起,错字;您需要调用函数
resolveCookies().then(... -
chrome.getCookies是否真的返回了一个承诺?如果没有,awaiting 它根本没有帮助。 -
瞥了一眼the source code 我不认为确实正确同步。
getCookies是async,但它不会等待它对getDerivedKey的调用,反正它不是async。尝试使用Util.promisify。
标签: javascript node.js asynchronous cookies promise