尝试在nodejs中使用async
和await
进行http请求,但遇到错误。有什么想法吗?谢谢
got response:
undefined
/home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:539
callback(parsedData,res);
^
TypeError: callback is not a function
at /home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:539:13
at Object.parse (/home/tom/learn/node/node_modules/node-rest-client/lib/nrc-parser-manager.js:151:3)
at ConnectManager.handleResponse (/home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:538:32)
at ConnectManager.handleEnd (/home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:531:18)
at IncomingMessage.<anonymous> (/home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:678:34)
at emitNone (events.js:110:20)
at IncomingMessage.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1059:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
这是该脚本的源代码。
var Client = require('node-rest-client').Client;
var client = new Client();
async function test1() {
response = await client.get("http://localhost/tmp.txt");
console.log("got response: ");
console.log(response.headers);
};
test1();
Node.js 版本为 v8.4.0,运行在 Ubuntu 14.04 上。
async/await
不能神奇地与期望回调的函数一起工作。如果client.get()
期望一个回调作为参数,那么如果你要使用它,你必须传递一个回调。async/await
与返回承诺的异步操作一起工作,并在这些承诺上操作。它们不能神奇地让你跳过传递回调到为回调设计的函数。我建议更多地阅读如何实际使用async
和await
。 - jfriend00async/await
的路径是首先设计所有异步操作以使用 promises 和.then()
处理程序。然后,在所有这些都正常工作之后,您可以声明返回 promises 的函数为async
,然后您可以使用await
调用这些函数,而不是使用.then()
处理程序。这里没有任何魔法快捷方式。从 promise 设计开始。 - jfriend00