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

Я просто знаком с обещаниями, и теперь у меня есть этот код. мне нужно сделать эту частьPromise and pipe jquery

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

в новую функцию, но я не понимаю, как вернуть обещание здесь ...

+3

Не могли бы вы объяснить свою проблему немного больше? Каков контекст? Что такое «это»? Уместно ли, что ваш вызов метода объекта? * «Я не понимаю, как вернуть обещание здесь» * Поскольку '.pipe' возвращает обещание, вы можете просто« вернуть »это значение из своей пользовательской функции. –

+0

Просто поделитесь соответствующей (я думаю) js library - 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 (функция (модель) { если (состояние) { сделайте что-нибудь }; return x; }); ' – user2114177

ответ

2

.pipe() осуждается шестерка JQuery версии 1.8, не используйте его больше.

Замена называется .then().

Вам не нужно возвращать обещание, просто верните (изменено) data. API Deferred делает все остальное.

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 
    });