代码之家  ›  专栏  ›  技术社区  ›  Harrison Cramer

嵌套Javascript如何返回“放弃”承诺?

  •  0
  • Harrison Cramer  · 技术社区  · 6 年前

    这个问题有两个部分,都与如何使用return语句在函数中传递Javascript承诺有关。

    1)

    我有一个简单的Javascript函数,它包含多个return语句。内部函数向arrow函数返回承诺,arrow函数也会返回,如下所示:

    const returnMe(data){
      return () => {
        return Promise.resolve(data);
      };
    };
    

    我能写下面的代码吗?

    returnMe("Hello!").then((msg) => { console.log(msg) }); /// --> output "Hello!" ??
    

    2)

     const returnMe(data){
        return () => {
          return Promise.resolve(data).then(() => { console.log("Ha!") });
        };
     };
    

    在本例中,“then”调用发生在函数内部。

    谢谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Barmar    6 年前

    1) 自 returnMe() 返回一个函数,您必须调用该函数。这将返回一个承诺,然后你可以使用它 .then()

    function returnMe(data){
      return () => {
        return Promise.resolve(data);
      };
    };
    
    returnMe("Hello!")().then(msg => console.log(msg));

    2) 内在的 。然后() 使用承诺解析为的数据,但它返回一个新的承诺。所以你可以打电话 。然后() 在这上面。

    与示例1一样,您需要调用 returnMe() 返回以执行内部函数。

    function returnMe(data){
        return () => {
          return Promise.resolve(data).then(() => { console.log("Ha!") });
        };
     };
     
     returnMe("Hello!")().then(() => console.log("Done!"));