-2

現在、Intern で機能テストを作成していて、小さな問題に遭遇しました。

テスト スイートの前の部分で、変数の値を取得するために API への ajax 呼び出しを行います。設定されているこの変数は、機能テストの次のステップにとって重要であるため、変数が ajax 呼び出しから返されるまでテストを停止したいと考えています。

Leadfoot の pollUntil() 関数について読んだところ、私が必要としていたことを実行したように思えました。次のコードを書きました。

var valueThatChanges = 0;

// ... (some functional test setup stuff)

//Ajax call that sets value of valueThatChanges
.then(function() {
    return ajaxCall(valueThatChanges);
})

//valueThatChanges is initially 0 before/during ajax call
//Is set to a randomly generated value that is non-zero after response recieved
.then(pollUntil(function(valueThatChanges) {
        return valueThatChanges !== 0 ? true : null;
    },[valueThatChanges], 30000, 100))

    .then(function() { //On success
        console.log('Value is no longer zero.')
    }, function(error) { //On failure/timeout
        console.log(error)
    })
});

valueThatChangesただし、値がまだ 0であるにもかかわらず、関数が成功のコールバックを即座に入力するため、これは機能しません。

pollUntil() がこのような状況を処理するように設計されていない可能性があることは理解していますが (pollUntil で DOM 要素を直接処理していないため)、この特定のシナリオで機能しない理由はわかりません。

pollUntil() は、ポーリング関数の呼び出しごとに更新された変数を渡していないようです。

pollUntil() は、変数値の変更時にイベントのトリガーを処理できますか?

4

1 に答える 1