Lambda 节点 "hello undefined" async/await 不工作?
Lambda node "hello undefined" async/await don't work?
这是我的问题:我想在我的 aws-lambda 函数 (nodejs 12) 中调用 Vimeo api 来获取有关视频的一些 information/data (例如:持续时间,标题,...)。
这是我的代码:
exports.handler = async event => {
let Vimeo = require("vimeo").Vimeo;
let client = new Vimeo("{client_id}", "{client_secret}", "{access_token}");
console.log('client => ',
client);
console.log('event => ', event);
video_id = event.video_id;
const res = await client.request(
{
method: "GET",
path: `/users/1234567890/videos/${video_id}`
},
function(error, body, status_code, headers) {
if (error) {
console.log("error", error);
}
console.log("body", body);
console.log("status code");
console.log(status_code);
console.log("headers");
console.log(headers);
return body;
}
)
console.log('hello', res);
return 'ok';
};
为了尝试,我启动了一些测试。 lambda return ok
所以我知道我的函数会通过所有指令,但 console.log return hello undefined
.
对我来说(我的意思是我猜)这是回调,目前我 100% 知道 client.request(...)
return 如果您等待足够长的时间,它是物有所值的;但即使使用 async function
和 await
,lambda 看起来也太忙了,无法等待 vimeo api.
的响应
谢谢,祝你有美好的一天
await client.request()
return 没有承诺等待。
你需要像这样自己做:
exports.handler = async event => {
const Vimeo = require('vimeo').Vimeo
const client = new Vimeo('{client_id}', '{client_secret}', '{access_token}')
console.log('client => ', client)
console.log('event => ', event)
const videoId = event.video_id
const res = await new Promise((resolve, reject) => {
client.request({
method: 'GET',
path: `/users/1234567890/videos/${videoId}`
},
function (error, body, statusCode, headers) {
if (error) {
console.log('error', error)
reject(error)
return
}
console.log('body', body)
console.log('status code')
console.log(statusCode)
console.log('headers')
console.log(headers)
resolve(body)
}
)
})
console.log('hello', res)
return 'ok'
}
这是我的问题:我想在我的 aws-lambda 函数 (nodejs 12) 中调用 Vimeo api 来获取有关视频的一些 information/data (例如:持续时间,标题,...)。
这是我的代码:
exports.handler = async event => {
let Vimeo = require("vimeo").Vimeo;
let client = new Vimeo("{client_id}", "{client_secret}", "{access_token}");
console.log('client => ',
client);
console.log('event => ', event);
video_id = event.video_id;
const res = await client.request(
{
method: "GET",
path: `/users/1234567890/videos/${video_id}`
},
function(error, body, status_code, headers) {
if (error) {
console.log("error", error);
}
console.log("body", body);
console.log("status code");
console.log(status_code);
console.log("headers");
console.log(headers);
return body;
}
)
console.log('hello', res);
return 'ok';
};
为了尝试,我启动了一些测试。 lambda return ok
所以我知道我的函数会通过所有指令,但 console.log return hello undefined
.
对我来说(我的意思是我猜)这是回调,目前我 100% 知道 client.request(...)
return 如果您等待足够长的时间,它是物有所值的;但即使使用 async function
和 await
,lambda 看起来也太忙了,无法等待 vimeo api.
谢谢,祝你有美好的一天
await client.request()
return 没有承诺等待。
你需要像这样自己做:
exports.handler = async event => {
const Vimeo = require('vimeo').Vimeo
const client = new Vimeo('{client_id}', '{client_secret}', '{access_token}')
console.log('client => ', client)
console.log('event => ', event)
const videoId = event.video_id
const res = await new Promise((resolve, reject) => {
client.request({
method: 'GET',
path: `/users/1234567890/videos/${videoId}`
},
function (error, body, statusCode, headers) {
if (error) {
console.log('error', error)
reject(error)
return
}
console.log('body', body)
console.log('status code')
console.log(statusCode)
console.log('headers')
console.log(headers)
resolve(body)
}
)
})
console.log('hello', res)
return 'ok'
}