资讯专栏INFORMATION COLUMN

【Step-By-Step】高频面试题深入解析 / 周刊05

xiangchaobin / 3116人阅读

摘要:关于点击进入项目是我于开始的一个项目,每个工作日发布一道面试题。那个率先改变的实例的返回值,就传递给的回调函数。通过插入标签的方式来实现跨域,参数只能通过传入,仅能支持请求。因此清除浮动,只需要触发一个即可。

关于【Step-By-Step】
Step-By-Step (点击进入项目) 是我于 2019-05-20 开始的一个项目,每个工作日发布一道面试题。

每个周末我会仔细阅读大家的答案,整理最一份较优答案出来,因本人水平有限,有误的地方,大家及时指正。

如果想 加群 学习,可以通过文末的公众号,添加我为好友。

更多优质文章可戳: https://github.com/YvetteLau/...

__

本周面试题一览:

实现 Promise.race 方法

JSONP 原理及简单实现

实现一个数组去重的方法

清楚浮动的方法有哪些

编写一个通用的柯里化函数 currying

20. 实现 Promise.race 方法

在实现 Promise.race 方法之前,我们首先要知道 Promise.race 的功能和特点,因为在清楚了 Promise.race 功能和特点的情况下,我们才能进一步去写实现。

Promise.race 功能

Promise.race(iterable) 返回一个 promise,一旦 iterable 中的一个 promise 状态是 fulfilled / rejected ,那么 Promise.race 返回的 promise 状态是 fulfilled / rejected.

let p = Promise.race([p1, p2, p3]);

只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给 p 的回调函数。

Promise.race 的特点
Promise.race 的返回值是一个 promise 实例

如果传入的参数为空的可迭代对象,那么 Promise.race 返回的 promise 永远是 pending

如果传入的参数中不包含任何 promisePromise.race 会返回一个处理中(pending)的 promise

如果 iterable 包含一个或多个非 promise 值或已经解决的promise,则 Promise.race 将解析为 iterable 中找到的第一个值。

Promise.race 的实现
Promise.race = function (promises) {
    //promises传入的是可迭代对象(省略参数合法性判断)
    promises = Array.from(promises);//将可迭代对象转换为数组
    return new Promise((resolve, reject) => {
        if (promises.length === 0) {
            //空的可迭代对象;
            //用于在pending态
        } else {
            for (let i = 0; i < promises.length; i++) {
                Promise.resolve(promises[i]).then((data) => {
                    resolve(data);
                }).catch((reason) => {
                    reject(reason);
                })
            }
        }
    });
}
21. JSONP原理及简单实现

尽管浏览器有同源策略,但是

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104953.html

相关文章

  • Step-By-Step高频面试深入解析 / 周刊05

    摘要:关于点击进入项目是我于开始的一个项目,每个工作日发布一道面试题。那个率先改变的实例的返回值,就传递给的回调函数。通过插入标签的方式来实现跨域,参数只能通过传入,仅能支持请求。因此清除浮动,只需要触发一个即可。 关于【Step-By-Step】 Step-By-Step (点击进入项目) 是我于 2019-05-20 开始的一个项目,每个工作日发布一道面试题。每个周末我会仔细阅读大家的...

    yhaolpz 评论0 收藏0
  • Step-By-Step高频面试深入解析 / 周刊04

    摘要:关于点击进入项目是我于开始的一个项目,每个工作日发布一道面试题。的状态由决定,分成以下两种情况只有的状态都变成,的状态才会变成,此时的返回值组成一个数组,传递给的回调函数。 关于【Step-By-Step】 Step-By-Step (点击进入项目) 是我于 2019-05-20 开始的一个项目,每个工作日发布一道面试题。每个周末我会仔细阅读大家的答案,整理最一份较优答案出来,因本人...

    booster 评论0 收藏0
  • Step-By-Step高频面试深入解析 / 周刊04

    摘要:关于点击进入项目是我于开始的一个项目,每个工作日发布一道面试题。的状态由决定,分成以下两种情况只有的状态都变成,的状态才会变成,此时的返回值组成一个数组,传递给的回调函数。 关于【Step-By-Step】 Step-By-Step (点击进入项目) 是我于 2019-05-20 开始的一个项目,每个工作日发布一道面试题。每个周末我会仔细阅读大家的答案,整理最一份较优答案出来,因本人...

    youkede 评论0 收藏0
  • Step-By-Step高频面试深入解析 / 周刊06

    摘要:实例拥有构造函数属性,该属性返回创建实例对象的构造函数。在考虑对象而不是自定义类型和构造函数的情况下,寄生式继承也是一种有用的模式。在子类的构造函数中,只有调用之后,才能使用关键字,否则报错。 不积跬步无以至千里。 关于【Step-By-Step】 Step-By-Step (点击进入项目) 是我于 2019-05-20 开始的一个项目,每个工作日发布一道面试题。每个周末我会仔细阅读...

    FWHeart 评论0 收藏0
  • Step-By-Step高频面试深入解析 / 周刊06

    摘要:实例拥有构造函数属性,该属性返回创建实例对象的构造函数。在考虑对象而不是自定义类型和构造函数的情况下,寄生式继承也是一种有用的模式。在子类的构造函数中,只有调用之后,才能使用关键字,否则报错。 不积跬步无以至千里。 关于【Step-By-Step】 Step-By-Step (点击进入项目) 是我于 2019-05-20 开始的一个项目,每个工作日发布一道面试题。每个周末我会仔细阅读...

    LiuRhoRamen 评论0 收藏0

发表评论

0条评论

xiangchaobin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<