• R H 4
  • NEWBIE
  • 0 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 1
    Questions
  • 0
    Replies
お世話になっております。

Lightningコンポーネントで取引先検索機能を作成しております。
キーワードが入力された際にkeyUpでイベントを起こして、キーワードに一致する取引先を画面に表示する機能です。

キーワードに一致しない取引先が画面に表示されることが時々あります。
例えば、キーワードに「abc」と入力しているにもかかわらず、「株式会社ab」が表示されてしまいます。

コンポーネントのコントローラです。
KeyChange: function(component, event) {
        var Key = event.getParam("Key");
        var action = component.get("c.findByName");
        action.setParams({
            "Key": Key
        });
        
        action.setCallback(this, function(a) {
        console.log('2_' + Key);
            component.set("v.AccList", a.getReturnValue());
        });
        
        console.log('1_' + Key);
        $A.enqueueAction(action);
    }

enqueueAction直前(1)とsetCallback直後(2)でログを取得したところ以下のようになりました。
1_a
1_ab
1_abc
2_a
2_abc
2_ab

enqueueActionで渡した処理が、setCallbackでは順番通りに出力されていません。
非同期で行われることが原因と考えておりますが、enqueueActionで渡した処理をsetCallbackで順番通りに受け取ることは可能でしょうか。

現在はkeyUpをchangeに変更する、検索ボタンにする、最後に入力したキーワードの結果のみを画面に表示するつくりにする等の方法で対処しておりますが、setCallbackで順番通りに結果を受け取ることが理想です。

ご存じの方がいらっしゃいましたらご教授頂きたいです。
どうぞ宜しくお願い致します。
  • September 28, 2016
  • Like
  • 0