Ada*_*amG 0 javascript promise
我是功能性 Javascript 和承诺的新手。下面的代码很好用,直到我取消注释 this.writeDataToRealm(data.data)。然后我收到这个错误:
可能未处理的承诺拒绝。无法读取未定义的属性“writeDataToRealm”
如何将数据发送到函数进行进一步处理?
...
fetch(url, {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
Authorization: "Bearer " + token
},
}).then(function(response) {
if (response.status !== 200) {
throw Error(response.statusText);
} else {
return response.json().then(function(data) {
console.log(data);
return data.data;
})
}
}).then(data => {
this.writeDataToRealm(data.data)
}, err => {
console.log('Fetch Error: ', err);
});
}
writeDataToRealm(data) {
console.log(data[0]);
realm.write(() => {
realm.create('Student', {id: data[0].kp_ID, bb_first_name: data[0].kp_ID});
});
}
Run Code Online (Sandbox Code Playgroud)
这unhandled rejection是因为您忘记return了then回调的内部承诺,这会导致异常不会冒泡到您的catch处理程序:
.then(function(response) {
if (response.status !== 200) {
console.log('Error Status Code: ' + response.status);
// you might want to `throw` here
} else {
return response.json().then(function(data) {
console.log(data);
return data.data;
})
}
});
Run Code Online (Sandbox Code Playgroud)
问题Cannot read property 'writeDataToRealm' of undefined是由this不是您期望的实例引起的- 请参阅如何this在回调中访问正确的/ 上下文?. 最简单的解决方案是为回调使用箭头函数。
…
.then(data => {
this.writeDataToRealm(data)
}, err => {
console.log('Fetch Error: ', err);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17584 次 |
| 最近记录: |