2016-08-04 4 views
1

У меня есть следующая функция, которая возвращает функцию с помощью функции .then.JQuery. Then chain behavior

Func = function() { 
    return Func1([a, b])() 
     .then(_.bind(function() { 
      //something 
     }, this)); 
    }; 

А потом я назначить другую .then функцию Func, как это:

Func2 = function(){ 
    //something 
    this.Func() 
     .then(_.bind(function() { 
      //something 
     }, this)); 
    }; 

Будет ли цепь как Func1().then().then() или что-то другое?

+0

Да. Вы можете использовать '.then(). Then(). Then()' столько раз, сколько хотите. –

ответ

0

Это promise. И по обещанию вы можете сделать так много then, как вам нравится! ;)

function callback() { 
    console.log("then"); 
} 

var p = new Promise(function(resolve) { 
    resolve(); 
}).then(callback); 

p.then(callback); 
p.then(callback).then(callback); 
p.then(callback).then(callback).then(callback); 

Working example.

Или, как для примера:

var Func1 = function(param1) { 
    return new Promise(function(resolve) { 
     resolve(); 
    }); 
} 

var Func = function() { 
    return Func1(["a", "b"]).then(function() { 
     console.log("then"); 
    }.bind(this)); 
}; 

var Func2 = function() { 
    Func().then(function() { 
     console.log("then"); 
    }.bind(this)) 
    .then(function() { 
     console.log("then chain"); 
    }); 
}; 

Func2(); 

Working example.

0

Это:

Func2 = function(){ 
    //something 
    this.Func() 
     .then(_.bind(function() { 
      //something 
      }, this)) 
     }, this)); 
    }; 

недействительный JavaScript. Подсчитайте открытые фигурные скобки на закрытые фигурные скобки. Таким образом, из этого последнего утверждения будет ошибка. Если вам нужна цепочка .then():

Func2 = function(){ 
//something 
this.Func() 
    .then(_.bind(function() { 
     //something 
    }, this)) 
    .then(someOtherFuncName) 
    .then(function() { 
     console.log("It's a..."); 
    }) 
    .then(function() { 
     console.log("..CHAIN REEEAAACTIONNNN"); 
    }); 
}; 
+0

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

+0

@BhojendraNepal Проводка плохого кода - это то, что вы не должны делать. Кроме того, он заканчивает строку ';'. Таким образом, в этом выражении не будет больше фигурных скобок, это недействительный JavaScript, даже если в его исходном кодовом документе больше фигурных скобок. –

+0

Его, кажется, комментарий не ответ. –