1

Je ne peux pas comprendre pourquoi la troisième fonction (c.-à-doStuff3) n'est pas appelé, de sorte que le console.log sur la fourche doit imprimer les "hello world!!!!"Pourquoi la troisième fonction n'est-elle pas appelée dans un pipeK quand ils sont tous à terme?

const 
    doStuff =() => Future.of(["hello", "world"]), 
    doStuff2 = (x, y) => Future((resolve, reject) => resolve(`${x} ${y}`)), 
    doStuff3 = x => Future.of(`${x}!!!!`) 

pipeK(doStuff, apply(doStuff2), doStuff3)().fork(console.log, console.error) 

Vous pouvez l'exécuter sur Ramda REPL

Répondre

1

Future doesn « t sucent comme Promise

L'API cassée Promise vous permet de then sans erreurs de manipulation

// uh, what happens if there's a problem ? 
myPromise .then (console.log) 

// proper use, but nothing forces you to specify 2nd argument 
myPromise .then (console.log, console.error) 

Bien sûr, vous pourriez .catch, mais les gens oublient souvent que trop - L'avenir n'a pas ces problèmes ...


forces futures de spécifier le chemin d'erreur en faisant que le premier paramètre - à la fois l'exécuteur testamentaire et la fork « ing fonction

const f1 = (...xs) => 
    Future.of (xs) 

const f2 = (x, y) => 
    Future ((reject, resolve) => // REJECT comes first 
    resolve (x + y)) 

const f3 = x => 
    Future.of (`${x} !!!`) 

const myFuture = 
    pipeK (f1, apply (f2), f3) 
    ("hello", "world") 

       // ERROR path first 
myFuture.fork (console.error, console.log) 
// logs: "helloworld !!!" 
// returns: undefined 
+0

Merde, à la fin de la journée, il est moi que de mettre' resolve' d'abord ...: D en tout cas, merci pour l'explication :) –