Функция обратного вызова Javascript - PullRequest
0 голосов
/ 10 августа 2010

Вот проблема, я пытаюсь выполнить автоматический тест, чтобы проверить, правильно ли работает addToCart ().

addToCart();
if(Kiosk.GetCart().toString() !== emptyCartString){
    setTestResults('addToCart', 'Passed');
}
else{
    setTestResults('addToCart', 'Failed');
}

Я добавляю товар в пустую корзину, затем я хочу проверить, пуста ли корзина, если что-то есть, то addToCart () сработал и тест прошел. Если корзина все еще пуста после вызова addToCart (), то проверка должна завершиться неудачей.

То, что происходит, заключается в том, что метод addToCart () занимает некоторое время для выполнения, и в то же время оператор 'if' запускает и проверяет корзину перед тем, как addToCart () имеет шанс вернуться, и поэтому тест всегда завершается неудачей.

Обратные вызовы - это ответ, верно? Но как лучше их здесь реализовать?

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Ну, может быть, я не совсем понимаю вопрос, но что плохого в том, чтобы передать функцию обратного вызова в функцию addToCart и заставить эту функцию вызывать функцию обратного вызова, когда это будет сделано?

Как это:

addToCart( function() {
    if(Kiosk.GetCart().toString() !== emptyCartString){
        setTestResults('addToCart', 'Passed');
    }
    else{
        setTestResults('addToCart', 'Failed');
    }
} );
0 голосов
/ 10 августа 2010

Как я думаю, функция addToCard будет отправлять / получать на сервер, используя ajax. Затем добавьте код

if(Kiosk.GetCart().toString() !== emptyCartString){
    setTestResults('addToCart', 'Passed');
}
else{
    setTestResults('addToCart', 'Failed');
}

К вашей функции обратного вызова ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...