为什么我需要使用async关键字调用每个函数来调用模块化代码中的API

时间:2017-06-15 04:15:27

标签: node.js asynchronous async-await

我刚开始使用异步并等待并尝试将我的所有回调语法转换为async / await样式。

我无法理解的一件事是,为什么我每次都需要使用async关键字为我的函数添加前缀。

以下是示例:

APIQuery.js

makeRequest: async(options) => {
 try {
  var response = await(request(options1))
 }
 catch(err){
  console.log("Some error occurred");
  response = undefined;
 }
return response;
}

MobileAPI.js

getMobileData: async modal => {
 var options = {method: 'GET', json: true,uri: 'https://example.com/mobile/'+modal}
 var response = await APIQuery.makeRequest(options);
}

MobileService.js

getMobileDataService: async modal => {
 var response = await MobileAPI.getMobileData(modal);
}

MobileController.js

同样,我必须使用async和await组合来返回响应。

所以我的问题是,有没有办法摆脱到处使用它。在APIQuery.js中调用异步等待是不够的?

2 个答案:

答案 0 :(得分:1)

如果您想使用await运算符,则必须在函数声明之前使用async关键字:

  

await运算符用于等待Promise。它只能在异步函数中使用。

如果您不想在任何地方使用async,可以继续使用回调或承诺(thencatch等)。

答案 1 :(得分:0)

  

所以我的问题是,有没有办法摆脱在任何地方使用它。

你无法阻止。期。一旦阻止,您的服务器就会对所有请求完全没有响应,直到它被解除阻止。因此,您的代码必须是异步的。

回调是一种完全有效的异步形式,但async / await更易于使用,理解和维护。