【发布时间】:2016-10-06 12:44:06
【问题描述】:
我是 Angular 和 Node 的新手,最近也在玩 AWS。我喜欢无服务器计算的概念,因此正在尝试编写一个 AngularJS 应用程序,该应用程序将调用 AWS Lambda 上托管的 Node.JS 微服务。
我已经通过 Angular 工厂调用了我的 Lambda 函数并获得了成功的响应。在调用 lambda.invoke() 方法后,我可以将我在 Lambda 函数中定义的 Lambda 有效负载从 Angular 工厂内输出到控制台,但我无法将数据输入控制器以实际使用它。我只是得到一个“未定义”的错误。
我已经在这个网站和其他网站上阅读了几个小时,而我对 Angular 的缺乏经验使得我自己很难完成这项工作,因此感谢任何帮助。我觉得答案必须对此有所不同(angular controller is executing before factory complete).......但我就是无法让它工作
工厂在下面:
my.factory("AWSbits", function() {
var params = {
FunctionName: 'arn:aws:lambda:eu-west-1:xyz',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: JSON.stringify ( {
".....some stuff"
}),
};
var lambda = new AWS.Lambda();
return{
lambdaexecute : function(){
lambda.invoke(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else {
console.log(data); // successful response
if (data.Payload != '{}') {
jdata = JSON.parse(data.Payload);
return jdata;
}
}
})}};
);
控制器是:
my.controller('AWSController', [
'$scope',
'AWSbits',
function($scope, AWSbits){
$scope.output = AWSbits.lambdaexecute();
console.log($scope.output); ====> undefined
}
]);
【问题讨论】:
标签: javascript angularjs factory aws-sdk aws-lambda