Wie funktioniert function.apply.bind im folgenden Code?

So bekomme ich, dass ein Array von [200.599] vom Versprechen zurückgegeben wird und die Rückruffunktion in spread an Function.apply.bind übergeben wird, aber jetzt bin ich verloren. Wie ist das Array von [200.599] in x und y aufgeteilt? Wie genau funktioniert die apply.bind?

function getY(x) {
        return new Promise( function(resolve,reject){
            setTimeout( function(){
                resolve( (3 * x) - 1 );
            }, 100 );
        } );
    }

function foo(bar,baz) {
    var x = bar * baz;

    // return both promises
    return [
        Promise.resolve( x ),
        getY( x )
    ];
}

function spread(fn) {
    return Function.apply.bind( fn, null );
}

Promise.all(
    foo( 10, 20 )
)
.then(
    spread( function(x,y){
        console.log( x, y );    // 200 599
    } )
)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage