我目前正在编写供个人使用的小型 NodeJS CLI 工具,并且我决定尝试使用 Babel 的 ES7 async/await 功能。
这是一个网络工具,所以我显然有异步网络请求。我为包写了一个简单的包装器request
:
export default function(options) {
return new Promise(function(resolve, reject) {
request({...options,
followAllRedirects: true,
headers: {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"
}
}, (error, response, body) => {
if(error) {
return reject(error);
}
resolve({response: response, body: body});
});
});
}
现在我可以做类似的事情
async function getGooglePage() {
try {
var r = await request({url: "http://google.com"});
console.log(r.body);
console.log("This will be printed in the end.")
} catch(e) {
console.log(e);
}
}
getGooglePage();
现在我有一个问题:我在很多地方都提出了请求,我必须将所有这些功能标记为async
,这是一个好习惯吗?我的意思是我的代码中几乎每个函数都应该是async
因为我需要await
其他async
函数的结果。这就是为什么我认为我误解了 async/await 概念。