【发布时间】:2019-01-16 22:00:11
【问题描述】:
现在制作异步函数的标准是什么?
我不是要在这里问基于选项的问题,而是要问 2018 年使用得更多的东西以及未来可扩展性更好的东西。
风格#1:
const client = new SteamUser();
exports.setup = callback => {
client.on('webSession', async (sessionID, cookies) => {
offers.setup(client, cookies, callback);
});
client.on('error', err => {
callback(error)
});
};
风格#2:
const client = new SteamUser();
exports.setup = async () => {
return new Promise(function(resolve, reject){
client.on('webSession', async (sessionID, cookies) => {
resolve(await offers.setup(client, cookies));
});
client.on('error', err => {
reject(error)
});
});
};
两者都在另一个文件中被调用:
try{
await module.setup();
} catch(err){
console.log(err);
}
【问题讨论】:
-
风格#3:异步/等待
-
怎么样?当您使用异步等待时,您还需要承诺吗?
-
你问的是风格。 async/await 隐藏了承诺。
-
“标准”是使用
util.promisify将所有回调接受函数转换为promise。然后使用异步/等待。 ;) -
你不能等待不返回承诺的东西 - 所以你的
Both called in another file by绝对没有意义
标签: javascript node.js ecmascript-6 promise