fetch的用法ajax,Promise发送Ajax请求、fetch用法

article/2025/7/9 16:35:32

实例方法:

Document

/*

基于Promise发送Ajax请求

*/

function queryData(url) {

var p = new Promise(function(resolve, reject){

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function(){

if(xhr.readyState != 4) return;

if(xhr.readyState == 4 && xhr.status == 200) {

// 处理正常的情况

resolve(xhr.responseText);

}else{

// 处理异常情况

reject('服务器错误');

}

};

xhr.open('get', url);

xhr.send(null);

});

return p;

}

// queryData('http://localhost:3000/data')

// .then(function(data){

// console.log(data);

// },function(info){

// console.log(info)

// });

// ============================

// 发送多个ajax请求并且保证顺序

queryData('http://localhost:3000/data')

.then(function(data){

console.log(data)//data 是上次异步处理返回的结果

return queryData('http://localhost:3000/data1');

})

.then(function(data){

console.log(data);

return queryData('http://localhost:3000/data2');

})

.then(function(data){

console.log(data)

});

复制代码

cf5b02738308666b527115a1a157588a.png

8972d27036352d71a384840e0e495f0c.png

58eaf4bb3c16614f6a70f12e6ce5c87a.png

返回的是普通值传递给then 默认会生成一个new Promise实例对象 实现链式操作

2fa88efc947a9214c55ee7f4124dae74.png

c4b01baf10b77c119d61a6f1b920c6af.png

对象方法:

Document

/*

Promise常用API-对象方法

*/

// console.dir(Promise)

function queryData(url) {

return new Promise(function(resolve, reject){

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function(){

if(xhr.readyState != 4) return;

if(xhr.readyState == 4 && xhr.status == 200) {

// 处理正常的情况

resolve(xhr.responseText);

}else{

// 处理异常情况

reject('服务器错误');

}

};

xhr.open('get', url);

xhr.send(null);

});

}

var p1 = queryData('http://localhost:3000/a1');

var p2 = queryData('http://localhost:3000/a2');

var p3 = queryData('http://localhost:3000/a3');

// Promise.all([p1,p2,p3]).then(function(result){

// console.log(result)

// })

Promise.race([p1,p2,p3]).then(function(result){

console.log(result)

})

复制代码

在方法 中返回return 的是new Promise实例对象

在外面定义变量 接收 Promise实例对象

Promise.all 全部返回的结果都执行

Promise.race 只要有一个结果返回就输出

fetch基本使用

df827dbaa6fb0ef29b066bfe9b804cef.png

f4158284418f68aedda008e944a5c32a.png

官方地址:

c3db19ff6a24f06030efa58d73faa995.png

ecac1ac7c87be769f872d76cb3a1853a.png

4f121311ba5b99439fb5cd1928626c1b.png

/*

Fetch API 基本用法

*/

fetch('http://localhost:3000/fdata').then(function(data){

// text()方法属于fetchAPI的一部分,它返回一个Promise实例对象,用于获取后台返回的数据

return data.text();

}).then(function(data){

console.log(data);

})

复制代码

post请求:

第一种用法:

be00b11346f9486b88d9580f39880df2.png

b3b0221710074947ca619e1d53a8c006.png

第二种:

4dbfa5c8fdd37afd64fd8f8850682e6a.png

92a9030f43f029240a09501afee6f216.png

put也支持上面的post第一种传参的方式

put 和 post 都是类似的

Document

/*

Fetch API 调用接口传递参数

*/

// GET参数传递-传统URL

// fetch('http://localhost:3000/books?id=123', {

// method: 'get'

// })

// .then(function(data){

// return data.text();

// }).then(function(data){

// console.log(data)

// });

// GET参数传递-restful形式的URL

// fetch('http://localhost:3000/books/456', {

// method: 'get'

// })

// .then(function(data){

// return data.text();

// }).then(function(data){

// console.log(data)

// });

// DELETE请求方式参数传递

// fetch('http://localhost:3000/books/789', {

// method: 'delete'

// })

// .then(function(data){

// return data.text();

// }).then(function(data){

// console.log(data)

// });

// POST请求传参

// fetch('http://localhost:3000/books', {

// method: 'post',

// body: 'uname=lisi&pwd=123',

// headers: {

// 'Content-Type': 'application/x-www-form-urlencoded'

// }

// })

// .then(function(data){

// return data.text();

// }).then(function(data){

// console.log(data)

// });

// POST请求传参

// fetch('http://localhost:3000/books', {

// method: 'post',

// body: JSON.stringify({

// uname: '张三',

// pwd: '456'

// }),

// headers: {

// 'Content-Type': 'application/json'

// }

// })

// .then(function(data){

// return data.text();

// }).then(function(data){

// console.log(data)

// });

// PUT请求传参

fetch('http://localhost:3000/books/123', {

method: 'put',

body: JSON.stringify({

uname: '张三',

pwd: '789'

}),

headers: {

'Content-Type': 'application/json'

}

})

.then(function(data){

return data.text();

}).then(function(data){

console.log(data)

});

复制代码

Fetch响应结果的数据格式

ee931f914ed789fd4ccfc967c60dee59.png

dc473395399ee84e207b1936c9c5ab90.png

ab9ab0445265055e6273e5325524544e.png

e2907ee0f406733f370d6b1ba1cef4d5.png

但是他是字符串

c003d09cd61931014b1083029ee8693c.png

我们要拿到它里面的属性

48c69afbb605711ffa5da8339763e7e5.png

a0302484709e318690614531c99aa6c2.png

/*

Fetch响应结果的数据格式

*/

fetch('http://localhost:3000/json').then(function(data){

// return data.json();

return data.text();

}).then(function(data){

// console.log(data.uname)

// console.log(typeof data)

var obj = JSON.parse(data);

console.log(obj.uname,obj.age,obj.gender)

})

复制代码


http://chatgpt.dhexx.cn/article/sBAnhk6v.shtml

相关文章

vue学习笔记-接口调用fetch用法

一,fetch概述 二,fetch基本用法 第一个then是fetch的一部分,返回一个promise对象,于是可以继续用then来处理返回的结果ret。 这段代码是服务器的代码: //这是在创建服务器,通过express,创建名为…

Vue接口调用(一)fetch用法

Vue接口调用🔥 接口调用地址Vue接口调用(一)fetch用法https://blog.csdn.net/m0_55990909/article/details/123957200Vue接口调用(二)axios用法🔥https://blog.csdn.net/m0_55990909/article/details/1239…

Fetch使用方法

前言: fetch是用来取代传统的XMLHttpRequest的。 它的优点很多,包括链式调用的语法、返回promise等。 什么是fetch? fetch api是基于promise的设计,它是为了取代传统xhr的不合理的写法而生的。 WHY fetch? xhr请求写起来非常的混…

彻底关闭烦人的---FF新推荐

1、进入控制面板——>管理工具——>服务 找到Flash Helper Service服务 2、进入控制面板——>管理工具——>任务计划程序 找到FlashHelper TaskMachineCore的任务,将其删除

如何关闭flashhelper的ff新推荐广告弹窗

描述:如何关闭flashhelper的ff新推荐广告弹窗 步骤: 方法一,直接C盘搜索flashhelper文件,删除即可方法二,在计算机管理服务里面,找到flashhelper禁用

ff新推荐的关闭办法

这个是flash的广告 如果直接删除Adobe Flash Helper会导致flash的不正常使用 建议是winR在输入框中输入service,在service里找到 然后停用再禁用掉就可以了

“FF新推荐”猥琐的弹窗如何关闭?

自己的电脑中时常会弹出一个叫“FF新推荐”的广告弹窗,扰民不说显示的内容也很猥亵。 特别是在演示文档,开会时就特别尴尬。 1. FF新推荐是个什么鬼?只要你安装了Flash控件会自动更新弹窗这个莫名其妙,十分尴尬的弹窗&#xff0…

禁用FF新鲜事广告

不知道啥时候起,电脑开机之后总会弹出莫名其妙的FF新鲜事广告,如图 定睛一看,Flash助手推荐,原来Flash才是罪魁祸首。这不能忍。打开任务管理器,不停按f,可以找到一个叫Flash Helper Service的进程&#xf…

FF新推荐弹窗怎么彻底让他爬

背景:不知道怎么就捆绑安装了这个流氓软件,还找不到位置,不知道在哪删?今天突然灵机一动试了一下这个方法,然后可行 第一步:守株待兔——等他不经意的弹出 第二步:欲擒故纵——点击右上角菜单创…

git merge之--no-ff 的作用

禁止使用快进模式 no-fast—forward $ git merge --no-ff -m "merge with no-ff" dev在许多介绍 Git 工作流的文章里,都会推荐在合并分支时,加上 --no-ff 参数: $ git checkout develop $ git merge --no-ff feature–no-ff 在这的…

如何卸载FF推荐?

很多小伙伴们都发现,近一段时间,自己的电脑中时常会弹出一个叫“FF新推荐”的广告弹窗,扰民不说显示的内容也很猥亵。按理说,电脑上开启拦截软件后,一般的广告弹窗是不会出现的,那么这个能跳过安全工具拦截…

git merge 合并时 --no-ff 的作用——主要影响版本回退(好文章!)

在许多介绍 Git 工作流的文章里,都会推荐在合并分支时,加上 --no-ff 参数: $ git checkout develop$ git merge --no-ff feature --no-ff 在这的作用是禁止快进式合并。我们平常什么都不加的时候,则使用默认的 --ff &#xff0c…

win10如何禁用\删除讨厌的ff新鲜事(ff新推荐)(flash弹窗广告)

雾草,Adobe Flash植入的这种广告太变态了! 定位: 打开运行窗口(winr),输入“services.msc”,之后回车确定 然后我们在弹出来的窗口中找到“flash helper service”选项,之后右键…

#FF00FF(255,0,255)应该是紫色(Purple),把#FF00FF称为“品红”(“洋红/Magenta”)是一种误称

作者:❄️固态二氧化碳❄️ (主页) 链接:#FF00FF(255,0,255)应该是紫色(Purple),把#FF00FF称为"品红"(“洋红/Magenta”)是一种误称 - 固态二氧化碳的博客 - CSDN博客 来源:CSDN博客 发表时间:2019年06月02日 18:31:06 …

音乐推荐系统

✨写在前面:强烈推荐给大家一个优秀的人工智能学习网站,内容包括人工智能基础、机器学习、深度学习神经网络等,详细介绍各部分概念及实战教程,通俗易懂,非常适合人工智能领域初学者及研究者学习。➡️点击跳转到网站。…

推荐系统算法--ItemCF--MF(ALS)--FF

1.ItemCF: 协同过滤是什么? 协同过滤 (Collaborative filtering),指的是,通过收集群体用户的偏好信息,自动化预测(过滤)个体用户可能感兴趣的内容。协同(collaborating&#xff09…

Git merge时使用--no-ff参数

/1、Git:Git-merge的–ff和–no-ff。 前言 Git merge最容易糊涂的地方就是这个--ff参数和--no-ff 参数,通过本文,把这个整理清楚。 其实官网讲的非常清楚,不过可能因为是英文的,所以大家阅读起来会有一些障碍。&…

如何清除弹窗FF新推荐

前言:一个星期日的下午,我打算过肥宅的生活,吃的东西已经就位,当我打开电脑后跳出了这个玩意,瞬间好心情全无。身为程序员,感觉受到了侮辱。 一 Adobe Flash简介 查看任务管理器查看详细信息如下&#xf…

ff新推荐弹窗怎么彻底删除---解决方案

根源:几乎所有的电脑中都会安装Flash Player,而FF新推荐弹窗就是Flash Player的,那么Win7、Win10系统FF新推荐怎么卸载? 方法一:直接删除FF新推荐 1、如果FF新推荐弹出之后,先不要关闭掉,使用键…

彻底关闭弹出广告“FF新推荐”

很多小伙伴们都发现,近一段时间,自己的电脑中时常会弹出一个叫“FF新推荐”的广告弹窗,扰民不说显示的内容也很猥亵。一检查发现居然是Flash中国官方干的,安装了flash播放器后就弹出广告。就像下面这样的: 1. FF新推荐…