无服务器框架模块是否有可能在返回之前等待“解析”承诺?
我知道承诺本身不能做到这一点,但不同的框架/库(express,Jasmine,hapijs等)通过一个方法来解决这个问题。定义何时返回。我需要这样的东西:
let http = require('http'),
Promise = require('bluebird');
let action = (done) => {
return new Promise((resolve, reject) => {
http
.get('http://domain.com', resolve.bind({}, 'all good!'))
.on('error', reject.bind({}, 'all wrong!'));
})
.then((response) => {
console.log('Result', response);
return done(response); // <----------- I wan't to see this as the response
// of the lambda function
});
};
module.exports.run = (event, context, cb) => cb(null, action(done));
答案 0 :(得分:1)
但是假设您的导出无论如何都需要回调,您可以简单地异步调用它:
module.exports.run = (event, context, cb) => {
action().then(res => cb(null, res), err=>cb(err));
};
当然,如果您刚刚退回承诺,那会更好。