Q / Promise处理回调参数

时间:2014-03-12 11:14:29

标签: node.js promise q

  var Q = require("q");
  function test(v){
    var deferred = Q.defer()
    if (v) {
      console.log("success");
      deferred.resolve();
    }
    else{
      console.log("failed");
      deferred.reject(new Error("failed"))
    } 
    return deferred.promise;
  }

  var over = function(url){
    console.log("hahaha")
    console.log(url)
  }

  var failed = function(){
    console.log("wuwuw")
  }

  test().then(over, failed)

  test().then(over("localhost"), failed)

test().then(over, failed)时,函数结束不应该执行,程序可以很好, 我可以得到结果:

  failed
  wuwuw

但是当我为函数添加params时,函数将会执行。我会得到:

  failed
  hahaha
  localhost
  wuwuw

显然,我不希望函数超过执行,但我需要它在test()解析时得到params。

1 个答案:

答案 0 :(得分:0)

  

但是当我为函数添加params时,函数结束将执行。

那是因为你正在调用它。您仍然需要将函数传递给then

test().then(function(testResult) {
    over("localhost");
}, failed)