Promise复习

92 阅读1分钟

在异步发起网络请求时,原来使用AJAX的时候,在异步操作中进行异步操作,太多的话会出现“回调地狱”

ES6新增的Promise解决此问题,使异步操作的网络请求写法更“优雅”

将异步操作网络请求与获取data之后对data进行操作的代码分离开,一个在Promise里,一个在then里

四种用法:

new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('111')
            }, 1000)
        }).then((info) => {
            console.log(info);
        })
new Promise((resolve, reject) => {
            setTimeout(() => {
                reject('111')
            }, 1000)
        }).catch((info) => {
            console.log(info);
        })
new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('111')
            }, 1000)
        }).then((info) => {
            console.log(info);
        }, (err) => {
            console.log(err);
        })
new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('成功')
            }, 1000)
        }).then((info) => {
            return info + '加上'
        }).then((info) => {
            console.log(info+'第二次成功');
        }
var p1 = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('p1')
            }, 1000)
        })
        var p2 = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('p2')
            }, 1000)
        })
        Promise.all([p1, p2]).then((results) => {
            console.log(results);
        }