我尝试用axios.all()
链接多个axios请求,并将回调传递给执行调用的函数。在我用callback
分散结果之后尝试调用axios.spread()
之后,但是在收到数据之前,第二个带有then()
的{{1}}被触发,因此我可以t将正确的数据发送到商店。
以下是操作:
callback
答案 0 :(得分:1)
它立即被触发,因为您正在立即调用它。尝试这样:
.then( () => callback( updateSchedules ) );
.then方法使用两个回调函数作为参数。一个成功就是一个失败。
const foo = () =>
new Promise( ( resolve, reject) => resolve( "success"))
.then(
success => console.log( success ),
failure => console.log( failure )
);
foo();
例如,在上面的代码中,我们的Promise控制台根据Promise情况记录成功或失败。如果不需要显式的参数,我们可以省略回调并使用console.log(作为我们的函数)。
const foo = () =>
new Promise( ( resolve, reject) => resolve( "success"))
.then( console.log, console.log );
foo();
这与以前相同。但是,再次,console.log不会立即在这里触发,因为我们没有调用它,只是将它与引用一起使用。
对于您的情况,如果不需要参数,可以使用上面的示例中的函数:
const foo = ( customFunction ) => {
new Promise( ( resolve, reject) => resolve( "success"))
.then( console.log, console.log )
.then( customFunction );
}
const customFunction = () => console.log( "custom message" );
foo( customFunction );
在这里,我们省略了成功的回调函数,但是使用customFunction作为引用,不会调用它。有用。但是,如果我们需要一个参数并在没有回调的情况下使用它,则该参数将不起作用并会立即触发,因为实际上是在调用它:
const foo = ( customFunction ) => {
new Promise( ( resolve, reject) => resolve( "success"))
.then( console.log, console.log )
.then( customFunction( "custom message") );
}
const customFunction = ( message ) => console.log( message );
foo( customFunction );
因此,我们使用成功回调函数来解决此问题:
const foo = ( customFunction ) => {
new Promise( ( resolve, reject) => resolve( "success"))
.then( console.log, console.log )
.then( () => customFunction( "custom message") );
}
const customFunction = ( message ) => console.log( message );
foo( customFunction );