Javascript 异步/等待nodejs支持?
只是一个我无法解决的小问题。我在节点v8.1.1上,尝试使用async/await,但不起作用。我的代码片段如下所示:Javascript 异步/等待nodejs支持?,javascript,node.js,asynchronous,async-await,Javascript,Node.js,Asynchronous,Async Await,只是一个我无法解决的小问题。我在节点v8.1.1上,尝试使用async/await,但不起作用。我的代码片段如下所示: const axios = require('axios'); const TOKEN = '...'; const httpClient = axios.create({ baseURL : 'https://myhost/api/', headers : { 'Authorization': `Token ${TOKEN}` }
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中的节点应该直接支持Async/await,对吗?
毫无疑问,我曾尝试使用
节点--harmony async await index.js
和节点--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()
因为应该清楚哪个块具有异步行为。同样,为了实现这一点,httpClient.get()应该返回一个
Promise
。确保是这样。节点v8.x支持异步/等待。但是,await必须位于异步函数中。他们总是成对的
更新:
最新的NodeJ也支持顶级异步/等待:
await
仅在async
函数中有效。它可以工作:)但它很奇怪。您知道为什么node不能直接从根目录处理wait
用法吗?因为规范不允许这样做。事实上,我之前检查过这个问题