【问题标题】:Get data from callback before finishing function AWS Nodejs SDK在完成函数 AWS Nodejs SDK 之前从回调中获取数据
【发布时间】:2017-02-05 18:49:13
【问题描述】:

我正在尝试为 create new IAM user in AWS using Nodejs SDK 创建一个 lambda 函数,函数 iam.createUser() 效果很好,但我无法在函数完成之前检索回调数据。我对Nodejs不熟悉,所以在这里寻求专家的帮助。

这是我调用createUser()的代码:

var retMessage = '';
var params = {
  UserName: "foo.bar";
};
iam.createUser(params, function(err, data) {
  if (err) {
    retMessage = err;
  } else {
    retMessage = data;
  }
}); 
console.log(retMessage);

当我的函数完成时,我从retMessage 得到的一切都是空的。

那么如何获取这些回调值呢?

【问题讨论】:

  • 您的 console.log 在函数完成之前发生。请记住,javascript 是异步的,这意味着它会触发 createUser,然后调用 console.log,它不会等待 createUser 然后继续
  • @Derek 这就是我问这个问题的原因

标签: node.js aws-lambda aws-sdk


【解决方案1】:

你为什么不把console.log(或数据处理)调用移动到回调中?喜欢

var params = {
  UserName: "foo.bar";
};
iam.createUser(params, function(err, data) {
  if (err) {
    retMessage = err;
  } else {
    retMessage = data;
  }
  console.log(retMessage);
  // ...do your data handling...
}); 

【讨论】:

  • 我的意思是我需要这个函数之外的retMessage 的值
  • 我认为现在有办法通过回调来做到这一点。如果您需要更“同步”的样式,您应该尝试其他方式,例如 Promise。
猜你喜欢
  • 2017-05-17
  • 2023-03-03
  • 2018-08-12
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
相关资源
最近更新 更多