Promise简明代码记录

Promise讲解

个人感觉讲的比较好的,忘记了可以反复听~忘记了主要是写的少~忘了就敲一敲吧

常见的异步:Ajax和定时器

Promise是一个类,构造函数,参数接2个行参

Promise是有状态的,前端可以打印查看

resolve

const p1 = new Promise((resolve,reject)=>{
    resolve("P1 任务成功得到的数据");    
})
p1.then(data=>{
    console.log(data);
}).catch(err =>{
    console.log(err);
})

//打印为P1 任务成功得到的数据

reject

const p2 = new Promise((resolve,reject)=>{     
    reject("P2 任务失败得到的数据")
})
p2.then(data=>{
    console.log(data);
}).catch(err =>{
    console.log(err);
})

// 打印为P2 任务失败得到的数据

2 个异步任务

新的promise写到then里,第二个then处理第一个then种promise返回的对象

const p3 = new Promise((resolve,reject)=>{     
    resolve("P3 任务成功得到的数据")    
})
p3.then(data=>{
    console.log(data);
    return new Promise((resolve,reject)=>{
        resolve("P4 任务成功得到的数据");    
    })
}).then(data=>{
    console.log(data);
})

// 打印为
// P3 任务成功得到的数据
// P4 任务成功得到的数据

2个异步任务,第一个出错用catch

const p5 = new Promise((resolve,reject)=>{     
    reject("P5 任务失败得到的数据")    
})
p5.then(data=>{
       return new Promise((resolve,reject)=>{
        resolve("P6 任务成功得到的数据");    
    })
})
.then(data=>{
    console.log(data);
})
.catch(err=>{
    console.log(err)
})

//打印为P5 任务失败得到的数据

2个异步任务,失败利用err(如果有err,就不会走catch)

const p5 = new Promise((resolve,reject)=>{     
    reject("P5 任务失败得到的数据")    
})
p5.then(data=>{
       return new Promise((resolve,reject)=>{
        resolve("P6 任务成功得到的数据");    
    })
},err => {    
    console.log(err);
})
.then(data=>{
    console.log(data);
})

//打印结果为: P5 任务失败得到的数据

Async&await

// 准备一个返回promise的对象函数
function asyncTask () {
    return new Promise((resolve,reject)=>{
        const isSuccess = true;
        if(isSuccess){
            resolve("成功")
        }else{
            reject("失败")
        }

    })
}
// 为使用await的函数添加async
async function main() {
    const data = await asyncTask();
    console.log(data);
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PromiseJavaScript 中处理异步操作的一种方式,它可以让我们更方便地组织和管理异步代码。下面是一个简单的 Promise 示例代码: ```javascript // 定义一个返回 Promise 的函数 function fetchUser(id) { return new Promise((resolve, reject) => { // 模拟异步请求数据 setTimeout(() => { if (id > 0 && id < 6) { resolve({ id: id, name: `User${id}` }); } else { reject('Invalid user id'); } }, 1000); }); } // 调用 fetchUser 函数,并在 Promise 完成后执行回调函数 fetchUser(3).then(user => { console.log(user); // { id: 3, name: 'User3' } }).catch(error => { console.error(error); // 'Invalid user id' }); ``` 以上代码中,我们定义了一个返回 Promise 对象的函数 `fetchUser`,它接收一个 `id` 参数,并模拟异步请求数据的过程。在 Promise 的构造函数中,我们使用 `setTimeout` 模拟异步操作,并在异步操作完成后,根据条件调用 `resolve` 或 `reject` 方法,以表示异步操作的成功或失败。 在调用 `fetchUser` 函数时,我们使用 `then` 方法来注册 Promise 对象的成功回调函数,在 Promise 成功完成后,会将异步操作的结果作为参数传递给回调函数。如果 Promise 失败了,则会调用 `catch` 方法来注册失败回调函数,从而可以捕获到异步操作的错误信息。 需要注意的是,Promise 的回调函数都是异步执行的,因此在回调函数中不能直接使用 Promise 返回的结果。如果需要在 Promise 完成后执行一些操作,可以将这些操作放在回调函数中,或者使用 `async/await` 等语法糖来处理 Promise
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值