2016-07-11 9 views
0

wraps Ich schreibe Integrationstests auf ein paar Funktionen mit Mocha, wo einige sind sync und andere async (gibt Q Versprechen).Wie synchrone Funktion in Versprechen mit Q

Ich habe drei Funktionen, A, B und C. Jede Funktion gibt einen Wert zurück, der von der nächsten Funktion verwendet werden soll.
A und C sind synchron, aber B gibt ein Versprechen. Ich muss sie in der Reihenfolge A>B>C aufrufen.
Wenn sie alle synchron wären, würde es wie folgt aussehen: C(B(A(args))).

Im Moment sieht mein Code wie folgt aus:

it('should pass this test', function() { 
    return B(A('args')) 
    .then(result => Q(C(result))) 
    .then(result => { 
     // bunch of assert statements 
    }) 
}) 

Ich bin kein Fan von dieser Zeile: .then(result => Q(C(result)))

In bluebird würde ich tun, nur .then(Promise.method(C)), aber ich habe Q zu verwenden, in Diese Situation und ich konnte keine ähnliche Methode in Q finden.

Gibt es eine Möglichkeit, dies in Q zu tun?

Antwort

1

Sie müssen ich nicht wickeln C

return B(A('args')) 
    .then(C) 
    .then(resultOfC => ... 
+0

Ah, sehen! then() kann sowohl Sync- als auch Async-Funktionen übernehmen, ich kann nicht glauben, dass ich das vorher nicht bemerkt habe. –

Verwandte Themen