美文网首页
关于Promise的一个测试题

关于Promise的一个测试题

作者: 硅谷干货 | 来源:发表于2021-12-01 09:57 被阅读0次

    我们知道Promise是一个高阶函数,Promise可以作为参数继续传参Promise,那么我出这样一道题你会不会绕进去呢?希望你没有!

    第一题的重点:练习返回一个resolve

    function foo() {
      return Promise.resolve('aaa')
              .then(data => { console.log("then1: ", data); })
              .then(data => { console.log("then2: ", data); return 'bbb'; })
              .then(data => { console.log("then3: ", data); return Promise.resolve('ccc'); })
              .catch(err => { console.log("eee"); return Promise.reject('eee'); });
    }
    
    console.log("111")
    foo()
      .then(data => { console.log("333: ", data); })
      .catch(err => { console.log("eee"); return 'ggg' });
    console.log("222")
    

    第二题的重点:练习返回一个reject

    function foo() {
      return Promise.resolve('aaa')
              .then(data => { console.log("then1: ", data); })
              .then(data => { console.log("then2: ", data); return 'bbb'; })
              .then(data => { console.log("then3: ", data); return Promise.reject('ccc'); })
              .catch(err => { console.log("eeee1: ", err);  return Promise.reject('ddd'); });
    }
    
    console.log("111")
    foo()
      .then(data => { console.log("333: ", data); })
      .catch(err => { console.log("eeee2"); return 'ggg' });
    console.log("222")
    

    到这里,我建议你先不要直接拷贝到编辑器运行,而是稍作思考,然后直接把答案写出来,再运行也不迟,如果运行结果和你手写的一样,那么恭喜你,你已经完全掌握了

    好了,答案我会放到最后,接下来先复习两个重要知识点:

    高阶函数

    如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数

      1. 若A函数,接收的参数是一个函数,那么A就可以称之为高阶函数
      1. 若A函数,调用的返回值依然是一个函数,那么A就可以称之为高阶函数
        常见的高阶函数有:Promise,setTimeout、arr.map 等等
    函数的柯里化

    通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数编码形式。

    最后直接抛出答案:

    第一题答案:

    $ node test.js 
    111
    222
    then1:  aaa
    then2:  undefined
    then3:  bbb
    333:  ccc
    

    第二题答案:

    $ node test.js 
    111
    222
    then1:  aaa
    then2:  undefined
    then3:  bbb
    eeee1:  ccc
    eeee2
    

    点赞加关注,永远不迷路
    每天一更新,创作拿命拼

    相关文章

      网友评论

          本文标题:关于Promise的一个测试题

          本文链接:https://www.haomeiwen.com/subject/fnndxrtx.html