Javascript 中的 Promise 对象,可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise 对象提供统一的接口,使得控制异步操作更加容易。
Promise 创建
var promise = new Promise(function(resolve, reject) {
// 异步处理
// 处理结束后、调用resolve 或 reject
});
实例
返回 Request 请求结果
function getIp() {
return new Promise(function (resolve, reject) {
const request = require('request');
request({
url: "http://pv.sohu.com/cityjson?ie=utf-8",
method: "GET",
}, function (error, response, body) {
if (response.statusCode === 200) {
resolve(body);
}
});
});
}
// 等待 getIp 执行结束返回 ip 地址
getIp().then(function (value) {
console.log(value);
});
async 与 await
async 将函数修饰为异步函数, 其他操作可以不等待此函数执行结束
await 修饰某一个操作,此操作执行结束,才能执行下一步
var ip = "127.0.0.1";
async setIp(){
await getIp().then(function (value) {
ip = value;
});
console.log(ip );
}
以上代码输出结果为 getIp() 获取的 ip 地址, 如果没有使用 await ,输出结果将为 127.0.0.1