面试常考:Promise的用法,以及fetch的原理

在了解Promise之前,我们来看一段代码

 

js

复制代码

function foo(){ setTimeout(()=>{ console.log('1') },1000) } function bar(){ console.log('2') } foo() bar

看完这段代码之后,按照传统的,代码从上往下执行,很多人会以为先打印出1,然后再打印出2,但是事实真是这样吗?

事实上,结果恰恰相反,事实上,结果是先打印2,后打印1

我们要知道,js,是单线程执行的,当在调用一个需要过一段时间才执行(像定时器,ajax)的函数时, 会先挂在那里不执行,先执行不耗时间的函数。

上面那段代码,实际上,时先调用bar(),然后再调用foo(),所以是先打印2,后打印1

那么,有没有一种办法,先执行foo(),后执行bar()呢?

答案是肯定的,下面我们来介绍一下Promise

Promise简单介绍

Promise是一个构造函数,用来生成Promise实例。实例代表一个异步操作的最终完成(或失败)及其结果值。

  • Promise有三种状态:

Resolved(已完成) :成功状态,表示操作成功完成。

Rejected(已失败) :失败状态,表示操作失败。

Pending(等待中) :初始状态,既没有被成功(resolved)也没有被拒绝(rejected)。

那么,怎么用Promise来解决上面那个问题呢?

再这里,我们用到的是return new Promise((resolve, reject) => { ... })

return new Promise((resolve, reject) => { ... }) 是JavaScript用来启动一个异步任务并处理其结果的方式。

  • Promise 是一个容器,它会容纳未来可能产生的结果(成功或失败)。

  • 当你创建一个 Promise,你需要给它一个函数(我们称之为 executor 函数),这个函数有两个参数:

    • resolve 是一个函数,当你想说“任务成功了,这里是结果”时,就调用它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值