节点expressionaws s3.listBuckets在页面呈现后执行callback

列表带有callback的桶:

router.get('/', function(request,response) { s3.listBuckets(function(error, data) { if (error) { console.log(error); } else { console.log(data.Buckets[0].Name);//since i have only one bucket bucket = data.Buckets[0].name; } }); response.render('index', { mybucket:bucket }); console.log("rendered page"); }); 

输出:

 rendered page //rendered page with mybucket:'' empty GET /getbucket 200 7.827 ms - 787 lvresults //bucketname displayed after rendering in console 

bucketname只能在页面呈现后访问

您应该访问callback函数内的数据。

 router.get('/', function(request,response) { s3.listBuckets(function(error, data) { if (error) { console.log(error); } else { console.log(data.Buckets[0].Name); bucket = data.Buckets[0].name; console.log("rendered page"); response.render('index', { mybucket:bucket }); } }); }); 

为了更好地理解asynchronous行为, 这个链接将会很有帮助。