2015-12-16 5 views
0

Я пытаюсь запросить данные с сервера с помощью магазина dojo jsonrest. Во время запроса я улавливаю обратный вызов, чтобы сделать что-то. Например
Dojo: Ошибка при обратном вызове ошибки при использовании lang.hitch

this.myStore.get(paramValue).then(lang.hitch(this, function (res) { 
         //do something like this.globalVal = res; 
        }, function (err) { 
         console.log(err); 
         //throw error 
        })); 

Но приведенный выше код работает только тогда, когда запрос возвращает успеха, т.е. дозу ввести в первом блоке отложенных на возвращение успеха, но когда произошла какая-то ошибка, то она не смогла достичь в error callback и поэтому я не могу уловить ошибки, возвращаемые сервером.

Если я сделать приведенный выше код без использования lang.hitch как этот

this.myStore.get(paramValue).then(function (res) { 
         //do something like this.globalVal = res; 
        }, function (err) { 
         console.log(err); 
         //throw error 
        }); 

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

Так зачем же это дожидаться, а если lang.hitch - это не то, что можно использовать с отсрочкой, то что использовать?

Благодаря

ответ

3

Hitch принимает два аргумента, контекст и функцию, которая должна быть выполнена в предыдущем контексте. На данный момент вы используете три, это не сработает. Вы пытаетесь объединить две функции в одну и ту же кнопку. Вам необходимо обернуть их каждый в отдельном зацепе:

this.myStore.get(paramValue).then(
    lang.hitch(this, function success (res) { 
     console.log('Success'); 
    }), 
    lang.hitch(this, function error (err) { 
     console.log('Error'); 
    }) 
); 
+0

Является ли их влияние на производительность таким образом? –

Смежные вопросы