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处理下
推荐问题