nodejs回调中变量转为全局变量?

let Cookies = []
cos.getObject({
    Bucket: '', 
    Region: '', 
    Key: '', 
}, function(err, data) {
    const fs = require('fs');
    Cookies = JSON.parse(data.Body.toString());
}
});
console.log(Cookies)
阅读 2k
2 个回答

callback 看上去是异步的吧。因为你的回调还没执行,所以Cookies里面还没有东西。

题主,你的代码执行顺序如图所示:
image.png

你把console.log放在回调里面再试试呢?

let Cookies = [];
cos.getObject({
  Bucket: '',
  Region: '',
  Key: '',
}, function (err, data) {
  const fs = require('fs')
  Cookies = JSON.parse(data.Body.toString())
  console.log(Cookies)
});

PS:

  1. 你多了个 },帮你纠正了
  2. Cookies = JSON.parse(data.Body.toString()) 这句话看不懂,要么你直接 Cookies = data.Body。还有就是你这样JSON.parse很容易报错,需要try catch处理下
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题