1.Promise
Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。其实这里用“成功”和“失败”来描述并不准确,按照标准来讲,resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。
let p = new Promise((resolve,reject) => {
//ajax
resolve('success');
console.log('after resolve');
reject('error');
});
p.then(result => {
console.log(result);
}).catch(result => {
console.log(result);
})
2.async&&await
1).async 是让方法变成异步
async function getData(){
return '这是一个数据';
}
console.log(getData()); //Promise { '这是一个数据' }
2).如何获取async 异步方法里面的数据的第一种方法
async function getData(){
return '这是一个数据';
}
var p=getData();
p.then((data)=>{
console.log(data);
})
3).await 是等待异步方法执行完成,可以获取异步方法里面的数据,但是必须得用在异步方法里面
async function getData(){
return '这是一个数据';
}
async function test(){
var d=await getData();
console.log(d);
}
test();
4).await 阻塞的功能 ,把异步改成一个同步
async function getData(){
console.log(2);
return '这是一个数据';
}
async function test(){
console.log(1);
var d=await getData();
console.log(d);
console.log(3);
}
test(); //1 2 3
5).async 定义的方法返回的是 Promise对象。
/*
function getData(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
var username='张三';
resolve(username);
},1000)
})
}
var p=getData();
p.then(function(d){
console.log(d);
})
* */
function getData(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
var username='张三';
resolve(username);
},1000)
})
}
async function test(){
var data=await getData();
console.log(data);
}
test();