当前位置: 首页 > news >正文

国外企业网站怎么做电脑网站设计页面

国外企业网站怎么做,电脑网站设计页面,运行下打开wordpress,专业做股权众筹的网站背景#xff1a; 本文介绍promise使用方式#xff0c;以及以Promise为基础的async/await用法和fetch/axios使用方式#xff0c;主要以案例的方式进行。 1.promise 1.1 promise介绍 javascript是单线程执行的#xff0c;异步编程的本质是事件机制和函数回调。当执行阻塞…背景 本文介绍promise使用方式以及以Promise为基础的async/await用法和fetch/axios使用方式主要以案例的方式进行。 1.promise 1.1 promise介绍 javascript是单线程执行的异步编程的本质是事件机制和函数回调。当执行阻塞任务或者进行IO操作时编程时很容易嵌套多层回调严重影响可读性和维护性陷入地狱回调如下所示: var addStudent function (name, callback) {setTimeout(function () {console.log(add name success);callback();}, 1000); }; addStudent(student-1, function () {addStudent(student-2, function () {addStudent(student-3, function () {console.log(end);});}); });执行结果如下所示 VM153:3 add student-1 success VM153:3 add student-2 success VM153:3 add student-3 success VM153:10 endpromise被用于解决该问题而被引入, 使用Promise的写法: function addStudentPromise(name) { return new Promise((resolve) { setTimeout(function () { console.log(add name success); resolve();}, 1000); }); } // 使用.then()链来链接异步操作 addStudentPromise(student-1) .then(() addStudentPromise(student-2)) .then(() addStudentPromise(student-3)) .then(() console.log(end));1.2 promise用法 promise有三种状态 pending-进行中、fulfilled-已成功、rejected-已失败; 对应两种状态切换路径 pending- fulfilled 和 pending- rejected。需要注意的是Promise在状态切换后不会再发生状态变化。 [1] 创建Promise 以下是一个Promise对象创建的模板: new Promise((resolve, reject) {// 代码A }); Promise创建时, 会立即执行代码A(一般包括异步逻辑)此时Promise处于pending状态当代码A内部的resolve方法被调用后Promise转为fulfilled状态当代码A内部的rejected方法被调用后Promise转为rejected状态。 new Promise((resolve, reject) {setTimeout(function () {resolve(success);}, 1000); }); new Promise((resolve, reject) {setTimeout(function () {reject(failed);}, 1000); }); [2] 编写异步逻辑 let ps new Promise((resolve, reject) {setTimeout(function () {resolve(success);}, 1000); }); ps.then((data){console.info(result is: data) }).catch((data){console.info(exception is: data) })异步逻辑通过then和catch完成promise对象转为(或处于)fulfilled时执行then逻辑promise对象转为(或处于)rejected时执行catch逻辑。参数data分别是调用resolve和reject方法时的入参。 [3] 案例介绍 function generateOddNumber(){let ps new Promise(function(resolve, reject){setTimeout(function(){var num Math.ceil(Math.random() * 100);if(num % 2 1){resolve([Success] Odd is num);}else{reject([Failed] Even is num);}}, 1000);})return ps; }generateOddNumber() .then(function(data){console.log(data);} ) .catch(function(data){console.log(data); }); 运行结果如下所示: [Success] Odd is73说明由于Promise创建时会立即执行传入的函数一般将Promise的创建放在函数内部调用函数时才会创建Promise对象。基于Promise的特点常在then中返回Promise对象以形成链式回调。除此之外Promise支持通过all和race将多个Promise绑定在一起执行all是所有Promise均完成而race表示至少一个Promise完成。 2.async和await async与await的组合是一种基于Promise实现的异步编程方法。 async写在方法前用于标记异步方法js会异步执行该方法(本质上是一个Promise对象包裹的函数)即不会因该方法阻塞而阻塞整体的执行流程。 await必须用在aync标记的方法内表示等待逻辑执行完成await会阻塞方法内后续的逻辑。 使用案例如下所示 function generateFruit() {return new Promise((resolve, reject) {setTimeout(() resolve(apple), 10000);}) }async function test() {console.log(test begin)// await此时会等待异步逻辑generateFruit执行完成才会继续执行下一行代码let result await generateFruit()console.log(test end, result is result)console.log(test end) }console.log(main begin) // test是async方法不会阻塞下一行运行 test() console.log(main end)执行结果如下: main begin VM142:8 test begin VM142:16 main end VM142:10 test end, result is apple VM142:11 test end3.fetch fetch方法用于代替jquery的ajax实现http请求调用其位于浏览器的window对象中因此不需要添加依赖。 使用方法较为简单如案例所示: fetch(http://127.0.0.1:8182/test/api/createFruite,{mode: cors,method: POST,headers: {Content-Type: application/json},body: JSON.stringify({id: 123456789,name: apple})}).then(function (res) {if (res.ok) {console.log(res.body);console.log(call http success);}}).catch(function (e) {console.log(call http failed)});fetch方法会返回一个Promise对象因此可通过then和catch开发异步逻辑。 4.axios axios是基于Promise对原生 XMLHttpRequest 的封装以及增强如提供了拦截器功能。 安装axios npm install axios在使用的地方通过import导入: import axios from axiosaxios用法 可通过axios提供的get/put/post等方法也通过配置项method指定HTTP方法类型 #axios的get方法 axios.get(http://127.0.0.1:8182/test/api/queryFruite, {params: {id: 1} }).then(res {console.log(res); }, err {console.log(err); })#在axios的配置项method中指定 axios({method: get,url: http://127.0.0.1:8182/test/api/queryFruite,params: {id: 1} }).then(res {console.log(res); }, err {console.log(err); })常见的axios的配置项有 [1] url 请求路径 [2] method 方法 [3] headers 请求头 [4] params 请求参数(追加到url后) [5] data 请求消息体 [6] timeout 请求超时时长(单位ms) 一般对同域请求写在一个js中可以基于baseURL创建一个公共的axios实例对象如下所示 const apiClient axios.create({baseURL: http://127.0.0.1:8182/test,headers: {timeout: 5000} })const listLocalModels async function () {const response await apiClient.get(/queryFruite)return response.data }const showModelInformation async function (request) {const response await apiClient.post(/createFruite, request)return response.data }拦截器使用方式 拦截器使用如下所示: 在根目录下创建文件.env: VITE_API_URLhttp://127.0.0.1:8182/test定义一个axios实例在该实例上设置拦截器: import axios from axiosconst instance axios.create({baseURL: ${import.meta.env.VITE_API_URL}/api,timeout: 5000 });// 请求拦截器 instance.interceptors.request.use(config {//config.headers[Authorization] Bearer localStorage.getItem(token);return config;},error {return Promise.reject(error);} );// 响应拦截器 instance.interceptors.response.use(response {//...return response.data;},error {return Promise.reject(error);} );// 封装 get 请求 export async function get(url, params {}) {return await instance.get(url, {params}); }// 封装 post 请求 export function post(url, data {}) {return instance.post(url, data); }
http://www.dnsts.com.cn/news/232117.html

相关文章:

  • 合肥网站建设模板系统wordpress图片主
  • 深圳网站建设龙华信科为企业规划一个网站
  • 稻壳网站建设wordpress保存的字体大小
  • 海尔建设此网站的目的是什么意思网站中的搜索功能怎么做的
  • 官方网站建设公司上海百度移动关键词排名优化
  • 杭州网站制作模板安徽网站推广
  • 自助建站哪个网站好在线画图网页版
  • 山西建设银行官方网站做的网站错位怎么办
  • 短视频网站开发教程快速开租建站
  • 凡科网站建设平台好么软文营销的概念
  • 通江县住房和城乡建设局网站十条网站建设的seo策略
  • 网站的开发建设要做什么成都龙泉建设发展有限公司网站
  • 国内做网站装饰网站建设网
  • 网站开发的书企业官网运营
  • 给别人做金融网站 犯法吗网上注册公司核名流程
  • 建设网站的岗位杭州网站设计哪家公司好
  • 网站类型有哪些前端做网站需要
  • 网站开发专业就业培训学校建工网校app
  • 笑话网站域名桂林网站搭建
  • 国家工商局网站官网城乡建设行业证书查询
  • 电影网站怎么做关键词中企动力网站
  • 三都网站建设wordpress 设置icon
  • ae如何做视频模板下载网站重庆网站建设学习
  • 山东网站建设系统嘉定集团网站建设
  • 利用已有网站 制作购物网站建设策划书
  • 东山网站建设网站域名更改
  • 怎么创建网站充值和提现账号wordpress 正在建设插件
  • 网站开发设计运维一元购网站建设流程图
  • 宁都县建设局网站培训心得体会范文大全1000
  • 有网站如何做直播网络推广文案怎么写