为什么要写一个jsonp.js文件,文件做的事情是将url后面带的参数连上,然后暴露一个promise对象。
为什么发起ajax请求的axios却不用封装ajax?
export default (url, data, options) => {
// 请求的地址如果没有?就用?连接参数,如果请求的地址有?就用&连接参数
url += (url.includes('?') === true ? '?' : '&') + parseParma(data);
// 返回一个promise对象,可以用then方法执行回调函数
// resolve, reject这两个参数是promise自带的,不需要传入函数。
return new Promise((resolve, reject) => {
jsonp(url, options, (err, data) => {
if (err) {
// 如果有错,就执行reject方法并且把错误信息传递出去
reject(err);
} else {
// 执行成功,执行resolve方法,把data作为参数传递出去
resolve(data);
}
});
});
};
暴露的方法是为了返回一个promise对象然后在home.js文件中通过then方法写我们需要的回调函数吗?暴露的方法返回promise对象的意义是什么?
为什么在home.js中:
export const getHomeRecommend = (page = 1, psize = 20) => {
const url = 'https://ju.taobao.com/json/tg/ajaxGetItemsV2.json';
const params = {
page,
psize,
type: 0,
fontCatId: ''
};
return jsonp(url, params, {
param: 'callback'
}).then(res => {
console.log(res);
});
};
这段代码是什么意思?是调用我们下载的jsonp吗?为什么还要定义一个recommend方法?可以解释一下上述recommend方法的代码吗?
为什么在recommend.vue中created函数内又调用recommend方法?
在created调用recommend方法是保证发起jsonp过程中有时长,created方法是渲染HTML之前就调用保证不会显示空白的意思吗?
不太懂为什么在home.js中又定义了recommend方法的意义是什么?