我目前有一个利用原生Promise的项目。我希望将这些Promises迁移到Async / Await。我有麻烦将他们迁移过来;我正在尝试关注this文章。下面是带有Promises的当前代码,需要更改为Async / Await。
routes.js
// Importing user information
import user from '../server-controllers/user';
// User Information Route
router.get('/about', (req, res) => {
user.profile().then((data) => {
return res.render('user', {
title: data,
});
}).catch((e) => {
res.status(500, {
error: e,
});
});
});
user.js的
/*
This file contains any server side modules needed.
*/
module.exports = {
// Returns information about a user
profile: () => {
return new Promise((resolve, reject) => {
const user = "John Doe";
resolve(user);
});
},
};
如果有任何帮助,我需要做些什么来转换这些将有所帮助。我不知道代码是否需要更改routes
或user
文件(或两者)。
我在终端中收到的错误是[object Error] { ... }
答案 0 :(得分:4)
关于async
和await
要记住的关键是async
函数实际上只是一个返回Promise
的函数,并允许您使用{{1}解决await
的问题。因此,当Promise
拒绝时,如果Promise
被拒绝,那么在await
所在的任何地方都会出现错误。
从技术上讲,如果您想使用await
/ async
语法,则不需要 来更改await
。您可以将user.js
更改为:
routes.js
但是当您使用// Importing user information
import user from '../server-controllers/user'
// User Information Route
router.get('/about', async (req, res) => {
try {
const data = await user.profile()
return res.render('user', {
title: data
})
} catch (error) {
// Runs if user.profile() rejects
return res.status(500, {error})
}
})
函数时,user.js
更简洁:
async