asynchronous/等待nodejs支持?

只是一个我无法修复的小问题。 我在节点v8.1.1,我尝试使用asynchronous/等待,但它不起作用。 我的代码片段如下所示:

const axios = require('axios'); const TOKEN = '...'; const httpClient = axios.create({ baseURL : 'https://myhost/api/', headers : { 'Authorization': `Token ${TOKEN}` } }); try { const resp = await httpClient.get('users?limit=200'); } catch(e) { console.error(`Fail !\n${e}`); } 

而当我尝试运行它,我得到这个错误消息,什么也没有发生:

 /Users/mathieu/workspaces/galactic-tools/index.js:13 const resp = await httpClient.get('users?limit=200'); ^^^^^^^^^^ SyntaxError: Unexpected identifier at createScript (vm.js:74:10) at Object.runInThisContext (vm.js:116:10) at Module._compile (module.js:533:28) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:503:32) at tryModuleLoad (module.js:466:12) at Function.Module._load (module.js:458:3) at Function.Module.runMain (module.js:605:10) at startup (bootstrap_node.js:158:16) at bootstrap_node.js:575:3 

版本8中的Node应该支持asynchronous/等待,对吗? 在疑惑,我试图运行node --harmony-async-await index.jsnode --harmony index.js没有结果。

我不能说在node8中是否支持async / await,但是你可以尝试在如下的函数中包装try / catch:

 async function callService() { try { const resp = await httpClient.get('users?limit=200'); } catch(e) { console.error(`Fail !\n${e}`); } } callService() 

因为应该清楚哪个块会有asynchronous行为。 也为了这个工作,httpClient.get()应该返回一个Promise 。 确保它是如此。

asynchronous/等待由节点v8.x支持。 不过,等待必须在里面的asynchronousfunction。 他们总是成对的。