Promise

60 阅读1分钟
const promise = new Promise((resolve,reject)=>{
    if(true){
        resolve('Stuff Worked')
    }else{
        reject('Error,it broke')
    }
})

promise
    .then(result => result+"!")
    .then(result2 => {
        result2+"?"
        throw Error
    })
    .catch(()=>console.log('error!'))
    .then(result3 => {
        //throw Error  将不会被捕获到错误
        console.log(result3+'!')
    })
/*
 catch 在失败之前检查并运行,catch之后出现的报错不会捕获
*/
const promise = new Promise((resolve,reject)=>{
    if(true){
        resolve('Stuff Worked')
    }else{
        reject('Error,it broke')
    }
})

const promise2 = new Promise((resolve, reject)=>{
    setTimeout(resolve, 1000, 'HII')
})

const promise3 = new Promise((resolve, reject)=>{
    setTimeout(resolve, 2000, 'POOIE')
})

const promise4 = new Promise((resolve, reject)=>{
    setTimeout(resolve, 3000, 'Bye')
})

const promise5 = new Promise((resolve, reject)=>{
    setTimeout(resolve, 4000, 'Is it me you are looking for')
})

Promise.all([promise,promise2,promise3,promise4,promise5]).then(values =>{
    console.log(values)
})
/*返回结果
(5) ['Stuff Worked', 'HII', 'POOIE', 'Bye', 'Is it me you are looking for']*/

const urls = [
    'https://jsonplaceholder.typicode.com/users',
    'https://jsonplaceholder.typicode.com/posts',
    'https://jsonplaceholder.typicode.com/albums'
]

//Promise.all
Promise.all(urls.map(url=>
    fetch(url).then(resp=>resp.json())
)).then(arrays=>{
    console.log('users',arrays[0])
    console.log('posts',arrays[1])
    console.log('albums',arrays[2])
}).catch('oops');

//返回调用数据

//async await 方式
const getData = async function(){
//try catch来捕获异常信息
    try {
        const [users,posts,albums] = await Promise.all(urls.map(url=>
        fetch(url).then(resp=>resp.json())
        ))
        console.log('users',users)
        console.log('posts',posts)
        console.log('albums',albums)
    } catch (error) {
        console.log(error)
    }
}

getData()