我已经浏览了文档,阅读了其他问题和答案,但我仍然无法理解什么函数可以使异步,以及在哪里放置等待,以获得我想要的行为。基本上,我希望console.log(this.data)构造函数中的 注销我获取的数据,但现在它注销了一个挂起的Promise.我已经尝试了几乎所有我能想到的方法,但最终我总是退出 aPromise或undefined.我在哪里可以在这些方法中添加 async/await 以使其注销构造函数中获取的数据?如果我以完全错误的方法进行此操作,请告诉我。class Apa { constructor () { this.ajaxURL = 'https://example.com/api/'; this.mockParams = { title: 'foo', body: 'bar', userId: 1 }; this.data = this.getData(this.mockParams).then(xhr => this.data = JSON.parse(xhr.response)).catch(xhr => this.data = {}); console.log(this.data); } getData(params) { return new Promise((resolve, reject) => { let request = this.postAjax(this.ajaxURL, params); request.then((xhr) => { resolve(xhr); }).catch((xhr) => { this.errorMessage = 'Ajax request failed: getData()'; reject(xhr); }); }); } postAjax(url, data) { return new Promise((resolve, reject) => { var params = typeof data == 'string' ? data : Object.keys(data).map( function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) } ).join('&'); var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhr.open('POST', url); xhr.onreadystatechange = function() { if (xhr.readyState>3 && xhr.status==200) { resolve(xhr); } }; xhr.onerror = () => reject(xhr); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(params); }); }}注意: 我知道这个类不能按原样工作,我不得不用模拟的东西替换真正的 API 端点,但我可以确保你在调用真正的 API 时没有问题。承诺(解决后)确实包含具有正确响应的真实 XMLHttpRequest。
添加回答
举报
0/150
提交
取消