jquery deferred で then に引数持たせたい

javascript

これ、普通にやってもできないんですよ。

たとえば、

var hogeFunc = function() {
   var d = new $.Deferred();
   d.resolve();
      
   return d.promise();
}

var showMessage = function(text) {
  console.log("text is=" + text);
}

みたいな関数があって、

hogeFunc().then(showMessage("testだぴょーん"));

を実行しても、console.log の結果は正しく出ません。

じゃあ、どうすればいいのかというと

var hogeFunc = function() {
   var d = new $.Deferred();
   d.resolve("てすとだぴょん!");
      
   return d.promise();
}

var showMessage = function(text) {
  console.log("text is=" + text);
}

てやって

hogeFunc().then(showMessage);

てやると、できる、ようわからぬ(笑)

要するに resolveに引数与えるとそれが、thenに引き継がれるみたい。

以下の記事参考にしました。

jQuery.Deferredで登録時に引数を持たせたい
http://www.kuma-de.com/blog/2013-05-24/5350

タイトルとURLをコピーしました