Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2017, 17:15
Аспирант
Отправить личное сообщение для alexandr2006 Посмотреть профиль Найти все сообщения от alexandr2006
 
Регистрация: 30.01.2013
Сообщений: 54

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, 24.04.2017 в 17:21.
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2017, 17:34
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

alexandr2006
А что у вас такое loadDetail() { ?
Объявление функции?
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2017, 17:36
Аспирант
Отправить личное сообщение для alexandr2006 Посмотреть профиль Найти все сообщения от alexandr2006
 
Регистрация: 30.01.2013
Сообщений: 54

Сообщение от Dilettante_Pro Посмотреть сообщение
alexandr2006
А что у вас такое loadDetail() { ?
Объявление функции?
ага. Это кусок из кода на react
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2017, 17:41
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

alexandr2006,
А не function loadDetail() { ?

Или, как в react
loadDetail: function() {

Последний раз редактировалось Dilettante_Pro, 24.04.2017 в 17:47.
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2017, 18:25
Аспирант
Отправить личное сообщение для alexandr2006 Посмотреть профиль Найти все сообщения от alexandr2006
 
Регистрация: 30.01.2013
Сообщений: 54

Сообщение от Dilettante_Pro Посмотреть сообщение
alexandr2006
А не function loadDetail() { ?

Или, как в react
loadDetail: function() {
С функцией все нормально:
https://facebook.github.io/react/doc...omponents.html
Ответить с цитированием
  #6 (permalink)  
Старый 24.04.2017, 20:51
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

[quote=alexandr2006;450912]
не пойму почему ругается на самый последний then: Cannot read property 'then' of undefined[/QUOTE]

[JS]this.loadDetail().then (() => {
    console.log('bla')
})


Если ошибка тут, то вероятно потому что loadDetail ничего не возвращает (void).
Передавайте функцию в кач-ве аргумента и вызывайте её как callback.
Ответить с цитированием
  #7 (permalink)  
Старый 25.04.2017, 08:19
Аспирант
Отправить личное сообщение для alexandr2006 Посмотреть профиль Найти все сообщения от alexandr2006
 
Регистрация: 30.01.2013
Сообщений: 54

Сообщение от Nexus Посмотреть сообщение
this.loadDetail().then (() => {
    console.log('bla')
})


Если ошибка тут, то вероятно потому что loadDetail ничего не возвращает (void).
Передавайте функцию в кач-ве аргумента и вызывайте её как callback.
Вот же возвращаю:

return defer.promise();

Другое дело что может в jquery 2 как-то подругому надо
Ответить с цитированием
  #8 (permalink)  
Старый 25.04.2017, 12:12
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

alexandr2006,
Интересно, а что в этом контенте this?
Ответить с цитированием
  #9 (permalink)  
Старый 25.04.2017, 13:10
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

Сообщение от alexandr2006 Посмотреть сообщение
Вот же возвращаю:

return defer.promise();

Другое дело что может в jquery 2 как-то подругому надо
«return defer.promise();» возвращается в callback'e метода «setState» (и не факт, что этот метод вообще что-то возвращает).
Даже если «setState» возвращает что-либо, то это «что-либо» так и останется в callback'e асинхронного запроса.
Ну и асинхронные запросы устроены так, что код продолжит выполняться не дожидаясь окончания запроса.
Это я к тому, что getDetail наверняка нифига не возвращает.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jquery (1.7.2) и promise alexandr2006 jQuery 3 01.03.2016 14:13
Динамический подсчет в таблице muraig jQuery 5 11.10.2014 16:54
хочу инвайт на хабр macdack Оффтопик 45 28.07.2013 23:18
Вопрос поддержки старых методов jQuery antonM jQuery 1 04.10.2012 00:08
JQuery + FireFox NOOB jQuery 4 02.11.2009 18:16