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

时间:2018-08-31 00:57:06

标签: javascript function asynchronous promise es6-promise

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

1)

我有简单的Javascript函数,其中包括多个return语句。内部函数向箭头函数返回一个promise,箭头函数也被返回,如下所示:

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 个答案:

答案 0 :(得分:1)

1)由于struct ll *inst = malloc(sizeof(struct ll) + (sizeof(void *) * 10)); 返回一个函数,因此您必须调用该函数。这将返回一个承诺,然后您可以将其与returnMe()

一起使用

.then()

2)内部function returnMe(data){ return () => { return Promise.resolve(data); }; }; returnMe("Hello!")().then(msg => console.log(msg));使用了承诺解析的数据,但是返回了一个新的承诺。因此,您可以为此致电.then()

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

returnMe()