为了账号安全,请及时绑定邮箱和手机立即绑定

在这种情况下,在哪里放置 async/await?

在这种情况下,在哪里放置 async/await?

守着星空守着你 2021-06-29 15:39:28
我已经浏览了文档,阅读了其他问题和答案,但我仍然无法理解什么函数可以使异步,以及在哪里放置等待,以获得我想要的行为。基本上,我希望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。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信