pgu*_*rio 5 node.js async-await
let request = require('request-promise')
function get(url) {
let _opt = {}
let response = (async () => {
try {
var ret = await request(url, _opt);
return ret;
} catch (e) {
console.log(e)
}
})();
return response
}
console.log(get('http://www.httpbin.org/ip'))
Run Code Online (Sandbox Code Playgroud)
得到:
Promise { <pending> }
Run Code Online (Sandbox Code Playgroud)
为什么不等待我的回复?
为什么不等我的回复?
这很简单,因为您正在返回一个承诺。Node js 是单线程的,并且以非阻塞的方式执行。
这意味着get函数中的返回响应是在响应变量解析之前执行的。
尝试如下:
let request = require('request-promise')
function get(url) {
let _opt = {}
return request(url, _opt);
}
async function some () {
console.log(await get('http://www.httpbin.org/ip'));
}
some();
Run Code Online (Sandbox Code Playgroud)
此示例也返回一个承诺,但在本例中我们正在等待承诺解析。
希望这有帮助。
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |