我是新来的反应者,我陷入了困境。我正在调用这样一个函数中的函数:
submit = () => {
this.props.getValue();
this.props.resetValidation();
this.notify();
this.props.toggle();
this.props.disable();
this.props.actionCost();
//this.props.action();
// this.props.actionTable();
};
正在发生的情况是,所有函数都在同时运行,而没有一个函数得到完全执行。为什么不应该在第一个函数成功运行后才调用函数?
此外,在函数完全执行后,我如何一个接一个地运行函数?
请帮助
停止执行流的唯一方法是使用async/await
或generoator
函数,即使是这些函数也只是"句法糖";在CCD_ 3之上。
您可能正在调用一个异步函数,并期望它";完整的";而不使用CCD_ 4。
另一种情况是调用内部使用异步调用(如axios
或fetch
)的函数,并使用回调进行回复。在这种情况下,执行将继续,稍后将调用回调,这就是我们调用它们的方式;回调";
例如:
console.log('before');
setTimeout(() => console.log('timer completed'), 1000);
console.log('after');
将导致:
before
after
timer completed
在这个例子中,我记录before
,然后设置一个超时,在这里我提供一个稍后(1秒)执行的回调(一个简单的函数),同时执行流继续,并记录after
。一旦计时器到达,系统将执行我的回调。
如果您想在timer completed
之后执行after
,则必须提供一个回调,该回调将在执行完成后调用。
像这样:
function logTimer(doAfter) {
setTimeout(() => {
console.log('timer completed');
doAfter();
}, 1000);
}
console.log('before');
logTimer(() => console.log('after'));