jquery 2 promise
loadDetail() { var defer = $.Deferred() this.setState({bla-bla}, (event) => { this.ajaxGetDetail(this.state.openedBidId).then( (json) => { this.setState({ bla-bla }, () => { if (this.transmissionCollection.length === 0) { this.ajaxRequestTransmission().then( (result) => { result.map( (item)=>{ let obj = {} obj[`${item.id}`] = item.name this.transmissionCollection.push( obj ) }) let transmission_value = blabla this.setState({ blabla1 }, () => { return defer.promise(); }) }) } else { let transmission_value = blabla this.setState({ blabla2 }, () => { return defer.promise(); }) } }) }); }); } this.loadDetail().then (() => { console.log('bla') }) не пойму почему ругается на самый последний then: Cannot read property 'then' of undefined |
alexandr2006
А что у вас такое loadDetail() { ? Объявление функции? |
Цитата:
|
alexandr2006,
А не function loadDetail() { ? Или, как в react loadDetail: function() { |
Цитата:
https://facebook.github.io/react/doc...omponents.html |
[quote=alexandr2006;450912]
не пойму почему ругается на самый последний then: Cannot read property 'then' of undefined[/QUOTE] [JS]this.loadDetail().then (() => { console.log('bla') }) Если ошибка тут, то вероятно потому что loadDetail ничего не возвращает (void). Передавайте функцию в кач-ве аргумента и вызывайте её как callback. |
Цитата:
return defer.promise(); Другое дело что может в jquery 2 как-то подругому надо |
alexandr2006,
Интересно, а что в этом контенте this? |
Цитата:
Даже если «setState» возвращает что-либо, то это «что-либо» так и останется в callback'e асинхронного запроса. Ну и асинхронные запросы устроены так, что код продолжит выполняться не дожидаясь окончания запроса. Это я к тому, что getDetail наверняка нифига не возвращает. |
Часовой пояс GMT +3, время: 06:41. |