分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

js中的promise使用

发布时间:2023-09-06 01:56责任编辑:彭小芳关键词:js
 1 // 0.5秒后返回input*input的计算结果: 2 function multiply(input) { 3 ????return new Promise(function (resolve, reject) { 4 ????????log(‘calculating ‘ + input + ‘ x ‘ + input + ‘...‘); 5 ????????setTimeout(resolve, 500, input * input); 6 ????}); 7 } 8 ?9 // 0.5秒后返回input+input的计算结果:10 function add(input) {11 ????return new Promise(function (resolve, reject) {12 ????????log(‘calculating ‘ + input + ‘ + ‘ + input + ‘...‘);13 ????????setTimeout(resolve, 500, input + input);14 ????});15 }16 17 var p = new Promise(function (resolve, reject) {18 ????log(‘start new Promise...‘);19 ????resolve(123);20 });21 22 p.then(multiply)23 ?.then(add)24 ?.then(multiply)25 ?.then(add)26 ?.then(function (result) {27 ????log(‘Got value: ‘ + result);28 });

运行结果: 

start new Promise...

calculating 123 x 123...

calculating 15129 + 15129...

calculating 30258 x 30258...

calculating 915546564 + 915546564...

Got value: 1831093128

代码的解析: resolve 是执行成功

      reject 是执行失败

      prototype.then()  递延处理

      prototype.catch()  异常捕捉

      使用setTimeout 模拟异步

以上代码每一步then都会执行函数中的setTimeout(resolve, 500, input * input), 第一个参数标签这是成功状态执行的函数, 第二参数延时500毫秒,第三参数传递给下一个函数的值。

 1 ‘use strict‘; 2 ?3 // ajax函数将返回Promise对象: 4 function ajax(method, url, data) { 5 ????var request = new XMLHttpRequest(); 6 ????return new Promise(function (resolve, reject) { 7 ????????request.onreadystatechange = function () { 8 ????????????if (request.readyState === 4) { 9 ????????????????if (request.status === 200) {10 ????????????????????resolve(request.responseText);11 ????????????????} else {12 ????????????????????reject(request.status);13 ????????????????}14 ????????????}15 ????????};16 ????????request.open(method, url);17 ????????request.send(data);18 ????});19 }20 21 var log = document.getElementById(‘test-promise-ajax-result‘);22 var p = ajax(‘GET‘, ‘/api/categories‘);23 p.then(function (text) { // 如果AJAX成功,获得响应内容24 ????25 ????console.log(text);26 },function (status) { // 如果AJAX失败,获得响应代码27 ????console.log(‘ERROR: ‘ + status);28 });

以上代码吧AJAX异步执行函数转换为promise对象。

js中的promise使用

原文地址:https://www.cnblogs.com/jiayiming/p/9099655.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved