p.xhr = xhr的理解

p.xhr = xhr的理解

相关代码:

import Ajax from './ajax.js';
// 常量
import {
  ERROR_HTTP_CODE,
  ERROR_REQUEST,
  ERROR_TIMEOUT,
  ERROR_ABORT,
  ERROR_HTTP_CODE_TEXT,
  ERROR_REQUEST_TEXT,
  ERROR_TIMEOUT_TEXT,
  ERROR_ABORT_TEXT
} from './constants.js';

const ajax = (url, options) => {
  // return new Ajax(url, options).getXHR();
  let xhr;
  const p = new Promise((resolve, reject) => {
    xhr = new Ajax(url, {
      ...options,
      ...{
        success(response) {
          resolve(response);
        },
        httpCodeError(status) {
          reject({
            type: ERROR_HTTP_CODE,
            text: `${ERROR_HTTP_CODE_TEXT}: ${status}`
          });
        },
        error() {
          reject({
            type: ERROR_REQUEST,
            text: ERROR_REQUEST_TEXT
          });
        },
        abort() {
          reject({
            type: ERROR_ABORT,
            text: ERROR_ABORT_TEXT
          });
        },
        timeout() {
          reject({
            type: ERROR_TIMEOUT,
            text: ERROR_TIMEOUT_TEXT
          });
        }
      }
    }).getXHR();
  });

  p.xhr = xhr;
  p.ERROR_HTTP_CODE = ERROR_HTTP_CODE;
  p.ERROR_REQUEST = ERROR_REQUEST;
  p.ERROR_TIMEOUT = ERROR_TIMEOUT;
  p.ERROR_ABORT = ERROR_ABORT;

  return p;
};

const get = (url, options) => {
  return ajax(url, { ...options, method: 'GET' });
};

const getJSON = (url, options) => {
  return ajax(url, { ...options, method: 'GET', responseType: 'json' });
};

const post = (url, options) => {
  return ajax(url, { ...options, method: 'POST' });
};

export { ajax, get, getJSON, post };

问题描述:

 p.xhr = xhr;

  p.ERROR_HTTP_CODE = ERROR_HTTP_CODE;

  p.ERROR_REQUEST = ERROR_REQUEST;

  p.ERROR_TIMEOUT = ERROR_TIMEOUT;

  p.ERROR_ABORT = ERROR_ABORT;


关于给p对象添加这些属性视频讲解的有点听不明白,老师可以再详细解释下吗?比如 p.xhr = xhr;  xhr不是在p的promise对象里面了吗?咋还要给P添加xhr?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕张 2021-01-29 11:58:43

同学你好,p.xhr = xhr;意思为:把xhr变量作为p上的一个属性值,不过属性名和xhr变量同名而已。这里也可自定义,老师为了语义化,所以起了同名。

http://img1.sycdn.imooc.com//climg/601387d809bf863c05470333.jpg

祝学习愉快!

好帮手慕张 2021-01-28 19:17:11

同学你好,new Promise()最后返回的是一个promise对象,为了使用方便,用的的时候能直接拿到 xhr,ERROR_HTTP_CODE等这些值,直接把这些值作为p的一个对象属性,在其它文件中就能直接使用了。

http://img1.sycdn.imooc.com//climg/60129d10094ceb2f06760330.jpg

​祝学习愉快!

  • 提问者 好帮手慕斯林 #1

    其他的理解了,但 p.xhr = xhr还是没

    2021-01-29 08:51:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师