调用函数作为道具一个接一个地作为反应传递

时间:2017-08-31 23:18:24

标签: javascript reactjs ecmascript-6

我在React中有一个组件,它接收2个函数作为道具,它们工作得很好。但是,作为承诺,我需要一个接一个地称呼它们。到现在为止我称他们为:

let whenfirst =this.props.function1();
whenfirst.then(this.props.function2());

但他们是并行调用的,我试过了:

whenfirst is undefined

但后来我得到:TypeError:import Card from 'material-ui';

我真的无法对function1进行修改,那么在function1完成后如何轻松执行function2?

1 个答案:

答案 0 :(得分:0)

编辑:对不起,我错过了你说不能改变功能1的关键部分。 忽略其余

所以我猜测 function1看起来像这样

function function1() {
   // make the POST call
   someAJAXLibrary.post('someUrl', maybePostData);
   // Do nothing.. post is doing its work and maybe 
   // you didn't care about the return
}

这意味着您无法知道POST呼叫何时完成。但是库POST调用可能确实会返回一个Promise(这是非常标准的),你只是不使用它。

所以改为

function function1() {
       return someAJAXLibrary.post('someUrl', maybePostData);
}

现在,您可以在组件中使用它,就像您最初想到的那样。

let whenfirst = this.props.function1();
whenfirst
   .then(useMeOrNot => this.props.function2());