在下面的代码中:
handleImageChange = (newFile, crop) => {
var string = RandomString.generate(20);
newImage(string, newFile, this.state.type, 0)
.then((result) => {
if(result) {
this.toggleModal();
}
});
}
saveCropped() {
var values = this.cropper.values();
var crop = this.cropper.crop();
var newFile = convertBase64ToFile(crop);
setTimeout(function() {
this.handleImageChange(newFile, crop);
}.bind(this), 5000);
}
调用的函数是saveCropped()
,然后调用handleImageChange
函数。
这个函数做什么(newImage)是向我的服务器发送Axios请求,但是当我运行它时,我收到以下错误:" TypeError:Object(...)(...)未定义&# 34;
问题是,即使我收到此错误,代码也会在后台执行,没有任何问题,即请求被发送到我的服务器并在控制台中收到响应。
错误指向第5行(newImage(...))
。
newImage函数有效,因为它不是唯一一个被调用的函数,函数只返回一个布尔值;即便如此:
function newImage(image_ID, image, imgType, type) {
var url = ...;
const header = {
headers: {
'Content-Type': imgType
}
};
axios.post(url, image, header)
.then(function (response) {
if(response.status === 200) {
if(type !== '1')
sessionStorage.setItem('avatar', image_ID);
console.log("Image uploaded!");
return true;
}
else
return false;
})
.catch(function (error) {
console.log(`Image could not be uploaded due to:\n${error}`);
return false;
});
}
我在这里做错了什么?
答案 0 :(得分:3)
您试图在then()
的返回值上调用newImage()
...但该功能没有返回语句。
据推测,您希望通过调用axios.post
返回承诺:
return axios.post(url, image, header).
etc etc