Я хотел бы знать, как мне сделать, чтобы вызвать функцию в обещании в выборке?функция вызова в обещании выборки без этого
Обратите внимание эту строку: .then(json => this.processReq(json))
я должен использовать this.
, потому что если не он говорит, что processReq
является undefined
. Не должно быть что-то вроде: .then(json => processReq(json))
из-за ES6 ??
это мой код (я использую Babel ES6 и React):
import React, { Component, PropTypes } from 'react'
import fetch from 'isomorphic-fetch'
export default class Batchprodpry extends Component {
constructor(props) {
super(props) {
.
.
.
processReq(json) {
Object.keys(json).forEach(item => {
if (item === 'error') {
Object.keys(json[item]).forEach(propry => {
alert('Conflicto! '+'\n'+
'Id: ' + JSON.stringify(json[item][propry]['propryid'])+'\n'+
'Id Operador: ' + JSON.stringify(json[item][propry]['fkempid'])+'\n'+
'Hora inicio: ' + JSON.stringify(json[item][propry]['propryhoraini'])+'\n'+
'Hora fin: ' + JSON.stringify(json[item][propry]['propryhorafin']))
})
}
})
}
.
.
postForm() {
let maq = this.state.obj['fkmaqid']
return fetch(`/scamp/index.php/batchprodpry/${maq}`, {
method: 'POST',
credentials: 'same-origin',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(this.state.a)
})
.then(req => {
if (req.status >= 400) {
throw new Error("Bad response from server")
}
return req.json()
})
.then(json => this.processReq(json))
.catch(function(error) {
console.log('request failed', error)
})
}
"* Не должно быть что-то вроде [...] из-за ES6 ?? *" - Нет, зачем? 'processReq' по-прежнему является методом экземпляра. – Bergi
Я обновил свой вопрос –
после вашего обновления, 'processReq' по-прежнему является методом экземпляра, а не локальной переменной. локальные переменные объявляются только с ключевыми словами 'var' и' let', вы используете синтаксис ES6, как определять методы, на которые ссылается 'this' – Aprillion