首页 > 其他分享 >promise对象项目应用实例

promise对象项目应用实例

时间:2023-03-09 16:23:39浏览次数:48  
标签:function img xhr 对象 url 实例 promise new Promise

Promise 对象是一种用于处理异步操作的 JavaScript 对象。下面是几个 Promise 对象的项目应用实例:

  1. 图片加载器 一个图片加载器可以通过 Promise 对象来实现。我们可以创建一个 Promise 对象,该对象在图片加载成功或失败时返回结果。例如:
    查看代码
    function loadImage(url) {
      return new Promise(function(resolve, reject) {
        var img = new Image();
        img.onload = function() {
          resolve(img);
        };
        img.onerror = function() {
          reject(new Error('Could not load image at ' + url));
        };
        img.src = url;
      });
    }
    
    // 用法示例
    loadImage('example.png').then(function(img) {
      console.log('Image loaded', img);
    }).catch(function(err) {
      console.error('Error loading image', err);
    });


  2. 求 使用 Promise 对象可以方便地处理 Ajax 请求。例如:
    查看代码
    function ajax(url) {
      return new Promise(function(resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
          if (xhr.readyState === 4) {
            if (xhr.status === 200) {
              resolve(xhr.responseText);
            } else {
              reject(new Error('Could not load ' + url));
            }
          }
        };
        xhr.open('GET', url);
        xhr.send();
      });
    }
    
    // 用法示例
    ajax('http://example.com/data.json').then(function(response) {
      console.log('Data loaded', response);
    }).catch(function(err) {
      console.error('Error loading data', err);
    });
  3. 超时处理 我们可以使用 Promise.race 方法来实现超时处理。例如:
    查看代码
    function timeout(delay) {
      return new Promise(function(resolve, reject) {
        setTimeout(function() {
          reject(new Error('Timeout'));
        }, delay);
      });
    }
    
    function requestWithTimeout(url, timeoutDelay) {
      return Promise.race([
        ajax(url),
        timeout(timeoutDelay)
      ]);
    }
    
    // 用法示例
    requestWithTimeout('http://example.com/data.json', 1000)
      .then(function(response) {
        console.log('Data loaded', response);
      })
      .catch(function(err) {
        console.error('Error loading data', err);
      });

    上述是 Promise 对象的项目应用实例,它们展示了 Promise 对象的强大功能,并可以帮助我们更好地理解 Promise 对象的概念和用法。

标签:function,img,xhr,对象,url,实例,promise,new,Promise
From: https://www.cnblogs.com/ddqyc/p/17198918.html

相关文章

  • a.b.c.d 转 a:{b:{c:123}} 支持对象 数组
    方法中用到lodash.js的一个merge合并对象方法letarr=[   {       name:'a[0].b.c',       value:123   },{       name:'a[0].b.a......
  • JavaScript 对象管家 Proxy
    JavaScript在ES6中,引入了一个新的对象类型​​Proxy​​​,它可以用来代理另一个对象,并可以在代理过程中拦截、覆盖和定制对象的操作。​​Proxy​​对象封装另一个对象......
  • ES6-ES11 ES8对象方法扩展
    视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>E......
  • TypeScript学习笔记 -- 接口对象
    1.接口对象-对对象的形状(shape)进行描述2.基本用法:规定了对象属性的类型  接口的首字母大写,一般会在接口前面加上大写的I  定义好的接口使用的时候,其中的属性不......
  • Object 对象
    概述JavaScript原生提供Object对象JavaScript的所有其他对象都继承自Object对象,即那些对象都是Object的实例Object对象的原生方法分成两类:Object本身的方法与......
  • 03、数据采集对象与数据类型
    转载公众号《微言晓意》,仅用于个人学习安全告警、系统与应用日志、网络流量以及资产漏洞、威胁情报等数据中,都包含大量有价值的安全信息,对这些分离的多源异构数据进行统一......
  • python入门学习-2.特性、函数、面向对象编程、文件读写
    高级特性切片取一个list或tuple的部分元素>>>L=['Michael','Sarah','Tracy','Bob','Jack']笨方法:>>>[L[0],L[1],L[2]]['Michael','Sarah','Tracy']切......
  • ES6-ES11 对象方法扩展
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>对象方......
  • 【JavaScript】38_对象的序列化----JSON
    3、对象的序列化对象的序列化JS中的对象使用时都是存在于计算机的内存中的序列化指将对象转换为一个可以存储的格式在JS中对象的序列化通常是一个对象转换为字符串(JSON字......
  • 11. 进阶面向对象 - 3
    11.进阶面向对象-3super方法引入上一节课程我们知道,如果父类中的方法在派生的子类中不能满足其需求的话,可以在子类中通过重写解决这个问题但是很多情况下,父类中的......