Возврат значения изнутри Fibers(nodejs)

Поэтому у меня возникли проблемы с попыткой вернуть значение из конструктора этого модуля. Я буквально понятия не имею, как вернуть значение обратно в конструктор.

Я надеюсь, что код говорит сам за себя, я хочу, чтобы конструктор возвращал хеш-переменную.

var Fiber = require('fibers');
var Future = require('fibers/future'), wait = Future.wait;

var fs = require('fs')
var crypto = require('crypto')



exports.cryptFile = function(fileName, callback){

    var crypt = crypto.createHash('md5');

    var stream = fs.ReadStream(fileName, {
        bufferSize: 1024 * 1024
    });


    stream.on('data', function(data) {
        crypt.update(data)
    });

    stream.on('error', function(err) {
        callback(err);
    });

    stream.on('end', function(){
        var digest = crypt.digest('hex')
        callback(null, digest);
    });



}

var cryptFileFuture = Future.wrap(this.cryptFile);


module.exports = function(filename){
    var future = new Future;
    Fiber(function(){
        hash = cryptFileFuture(filename).wait();
        console.log(hash);
        future.return(hash);
    });
    return future;
//  return hash;
}

person Manak Kapoor    schedule 31.10.2013    source источник
comment
Я думаю, что вам может просто не хватать .run() с конца волокна. github.com/laverdet/node-Fibers   -  person Jake    schedule 12.01.2014


Ответы (1)


вы забыли .run() на оптоволокне

person Micha Roon    schedule 04.03.2014