Como realmente usar Q promise no nó.js?

Author: thefourtheye, 2014-03-27

1 answers

promiseMeSomething() vai devolver um objeto de Promessa Q, Que terá then função nele, que é definido , como este

Promise.prototype.then = function (fulfilled, rejected, progressed) {

A forma mais simples de criar um objecto prometido seria usar o construtor da função Q, como este

new Q(value)
Vai criar um novo objecto promissor. Você pode então anexar os manipuladores de sucesso e fracasso, como este
new Q(value)
.then(function(/*Success handler*/){}, function(/*Failure handler*/){})

Além disso, se você passar uma única função do estilo nodejs para .then função, ela vai chamar essa função com um valor de sucesso como este

callback(null, value)

Ou se houver um problema, então

callback(error)

Para o seu caso particular, setTimeout aceita a função a ser chamada como o primeiro parâmetro. Então, seriam necessárias poucas linhas de código para que funcionasse realmente com promessas. Então, Q tem uma função conveniente, para este fim, Q.delay, que pode ser usado assim

var Q = require('q');

function async() {
    return Q.delay(1000)
}

async()
.then(function() {
    console.log('async called back');
});
Podes escrevê - lo mais curto assim.
Q.delay(1000)
    .then(function() {
        console.log('async called back');
    });

Se quiseres chamar a função de callback com algum outro valor, então você pode fazê-lo assim

Q.delay(1000, "Success")
    .then(function(value) {
        console.log('async called back with', value);
    });

Isto vai ser útil, quando você quer ter um atraso entre duas funções e a segunda função é dependente da primeira função.

 19
Author: thefourtheye, 2014-03-27 05:47:46