2013-10-10 31 views
4
somecode;  
this.function(param1, param2) 
    .pipe(function (model) { 
     if (condition) { 
      do something 
     }; 
    }).pipe(){ 
     do something else; 
    } 

我只是知道承诺,现在我有这个代码。 我需要这部分Promise和管jquery

this.function(param1, param2) 
    .pipe(function (model) { 
     if (condition) { 
      do something 
     }; 
    }) 

到一个新的功能,但我不知道如何回到这里一个承诺......

+3

你能解释一下你的问题吗?上下文是什么?什么是'这个'?你调用一个对象的方法是否相关? *“我不明白如何在这里返回一个承诺”*由于'.pipe'返回一个承诺,你可以从你的自定义函数中'返回'该值。 –

+0

只是共享一个相关的(我认为)js库 - https://github.com/stackp/promisejs/blob/master/promise.js – Prasanth

+0

这只是上下文来获得我们的自定义函数......它是不相关的,你意思是我可以只写'var newfunction = function(context,param1,param2){var x = this.function(param1,param2); x.pipe(function(model){if(condition){ }; return x; }); ' – user2114177

回答

2

.pipe()已被弃用SICE的jQuery 1.8版本,不使用它了。

更换名为.then()

您不需要返回承诺,只需返回(修改)data本身。剩下的就是Deferred API。

this.function(param1, param2) // assuming that call returns a promise object 
    .then(function (data) { 
     if (condition) { 
      // do something *to* data 
     }; 
     return data; 
    }) 
    .then(function (data) { 
     // do something else to data; 
     return data; 
    }) 
    .done(function (data) { 
     // do something *with* data 
    });