【发布时间】:2019-05-01 18:10:08
【问题描述】:
由于 firebase 函数现在使用 Node8 运行,我想将我当前的 ES5 函数 w Promise 流转换为 ES6 async/await
我的流程模式如下:
const AUTHORIZED = authorizedApi()
if AUTHORIZED
const SENT = sendContactMessage())
if SENT
const FOUND = findContact(
if FOUND
return "FINISHED"
if !FOUND
const CREATED = createContact()
if CREATED
return "FINISHED"
目前我正在使用一个特定的 conditionalPromiseFlow() 函数,如下所示:( 还需要处理错误..
const conditionalPromiseFlow = (...fns) => {
if (fns.length === 0) return Promise.resolve();
const [next] = fns;
return next().then(result => {
if (result) {
return conditionalPromiseFlow(...fns.slice(1));
}
return result;
});
};
我称之为:
conditionalPromiseFlow(
() => authorizedApi(jwtClient),
() => sendContactMessage(gmailAPI, encodedContactMessage),
() =>
findContact(
googlePeopleAPI.connections,
googleConnectionListParams,
sender.email
),
() => createContact(googlePeopleAPI, googlePeopleContactParams)
)
.then(
res => {
return { status: 200, infos: "done" };
},
error => {
return { status: error.status, infos: error.message };
}
)
.then(response => {
return res.send(response);
})
.catch(console.error);
这运行良好,但我猜异步/等待模式会简化我的代码...这是真的还是我应该坚持我当前的代码?
感谢反馈
【问题讨论】:
标签: javascript promise async-await