来自Node Callback回调方法的定义顺序

时间:2014-07-21 12:32:24

标签: node.js callback onerror bacon.js

我正在学习bacon.js 我写了这样的测试脚本。

var bacon = require('../nodejs/node_modules/baconjs').Bacon;
function TestClass(URL,port,username,password)
{  
  this.funcCheck = function( data , rescallback)
  {
    console.log(" data: " + data);
    if(data.length > 4)
    {
      rescallback(null,data.substring(0, 2));
    }
    else
    {
      console.log("Calling callback with error data: " + "error");
      rescallback("Too short",null);
    }
  }
}   
var tclass = new TestClass();
var names = ['Geroge','Valentine', 'Oz','Nickolas'];
var results = [];
var read  = bacon.fromNodeCallback( tclass.funcCheck, bacon.fromArray(names) )   
stream.onValue(function(value) 
{
  console.log(" onValue " + value);
  results.push( value);  
});

stream.onError( function(error)
{
  console.log(" OnError " + error);
 // results.push( err);
});
console.log(" results " + results);

问题是onError永远不会被调用,尽管" Oz"少于4个字符,我知道rescallback被调用1个非空参数。 我可以看到日志打印输出。 另一件事是,如果我更改onError的定义并将其放在onValue之前,onError将被正确调用一次,并且永远不会调用onValue。 我确定我错过了一些非常基本的东西,但我不知道到底是什么。 我做错了什么? 感谢

0 个答案:

没有答案