最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Promise如何在Node.js和AWS lambda函数中工作

IT培训 admin 3浏览 0评论

Promise如何在Node.js和AWS lambda函数中工作

一般来说,我对Javascript和Node.js还是很陌生。因此,我试图让我领会Node.js中异步编程的概念,以及如何在AWS Lambda中使用异步编程。

[我在Amazon博客上遇到了此博客文章,其中解释了Node.js lambda函数对async / await的支持:/

据我所知,生成承诺的函数的概念如下面的代码片段所示:

const func1 = () => {
    console.log("Starting with execution of func1...")
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("First promise ended after 3 secs")
        }, 3000)
    })
}

因此在这里,该函数显式生成一个Promise并返回它。

但是在上面的AWS博客文章中,我看到了这样的函数定义:

let AWS = require('aws-sdk');
let lambda = new AWS.Lambda();

exports.handler = async (event) => {
    return await lambda.getAccountSettings().promise() ;
};

现在我已经检查了适用于Node.js的AWS开发工具包文档(.html#getAccountSettings-property,并且我发现函数getAccountSettings接受回调作为第三个参数。

[我对生成Promise的.promise()语法感到困惑。函数如何确保使用该语法会返回Promise对象。因为从文档中没有提到如果我使用.promise()它将返回一个Promise。我假设在这方面可能有一个经验法则。

如果我只是写return await lambda.getAccountSettings().promise()也会有什么不同。

我可以参考任何文档吗?

请您进一步说明这种重新获得承诺对象的新方法。

感谢您的任何帮助。

回答如下:

[如果您想了解为什么可以使用return await lambda.getAccountSettings()方法,以及为什么不只按原样返回诺言,请注意,这样的API会随着时间演变,并且必须保持向后兼容性。

让我们构建类似的东西,但是简化很多。让我们创建一个为给定数字提供1 / x的函数,但是当x = 0时提供一个错误对象。这将异步完成。

此外,我们希望函数返回synchronously一个对象,该对象允许一个人为发生错误时注册侦听器,为一个成功发生时注册侦听器,并在两者中的任何一个发生时注册另一个侦听器。从AWS返回的结果来看,这是一个非常简化的想法:在那里,您会获得非常丰富的.promise()对象。

因此,假设我们在2012年,并且诺言尚未在JavaScript中广泛使用/使用。因此,我们为异步1 / x函数提供了以下API:

Request

Promise如何在Node.js和AWS lambda函数中工作

一般来说,我对Javascript和Node.js还是很陌生。因此,我试图让我领会Node.js中异步编程的概念,以及如何在AWS Lambda中使用异步编程。

[我在Amazon博客上遇到了此博客文章,其中解释了Node.js lambda函数对async / await的支持:/

据我所知,生成承诺的函数的概念如下面的代码片段所示:

const func1 = () => {
    console.log("Starting with execution of func1...")
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("First promise ended after 3 secs")
        }, 3000)
    })
}

因此在这里,该函数显式生成一个Promise并返回它。

但是在上面的AWS博客文章中,我看到了这样的函数定义:

let AWS = require('aws-sdk');
let lambda = new AWS.Lambda();

exports.handler = async (event) => {
    return await lambda.getAccountSettings().promise() ;
};

现在我已经检查了适用于Node.js的AWS开发工具包文档(.html#getAccountSettings-property,并且我发现函数getAccountSettings接受回调作为第三个参数。

[我对生成Promise的.promise()语法感到困惑。函数如何确保使用该语法会返回Promise对象。因为从文档中没有提到如果我使用.promise()它将返回一个Promise。我假设在这方面可能有一个经验法则。

如果我只是写return await lambda.getAccountSettings().promise()也会有什么不同。

我可以参考任何文档吗?

请您进一步说明这种重新获得承诺对象的新方法。

感谢您的任何帮助。

回答如下:

[如果您想了解为什么可以使用return await lambda.getAccountSettings()方法,以及为什么不只按原样返回诺言,请注意,这样的API会随着时间演变,并且必须保持向后兼容性。

让我们构建类似的东西,但是简化很多。让我们创建一个为给定数字提供1 / x的函数,但是当x = 0时提供一个错误对象。这将异步完成。

此外,我们希望函数返回synchronously一个对象,该对象允许一个人为发生错误时注册侦听器,为一个成功发生时注册侦听器,并在两者中的任何一个发生时注册另一个侦听器。从AWS返回的结果来看,这是一个非常简化的想法:在那里,您会获得非常丰富的.promise()对象。

因此,假设我们在2012年,并且诺言尚未在JavaScript中广泛使用/使用。因此,我们为异步1 / x函数提供了以下API:

Request
发布评论

评论列表 (0)

  1. 暂无评论