首页 > 其他分享 >请用js实现一个promise的方法

请用js实现一个promise的方法

时间:2024-11-27 09:14:12浏览次数:7  
标签:resolve console value 请用 promise error js data Example

// Basic Promise Example: Resolving a value after a delay

function myPromise(delay, value) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(value); // Resolve with the provided value
    }, delay);
  });
}


// Example usage:
myPromise(2000, "Hello from myPromise!")
  .then(result => {
    console.log(result); // Output after 2 seconds: "Hello from myPromise!"
  })
  .catch(error => {
    console.error(error); // This won't execute in this example
  });



// More Robust Example: Handling potential errors

function myPromiseWithRejection(delay, value, shouldReject) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (shouldReject) {
        reject("An error occurred!"); // Reject with an error message
      } else {
        resolve(value); // Resolve with the value
      }
    }, delay);
  });
}

// Example usage demonstrating rejection:
myPromiseWithRejection(1000, "Success!", true)
  .then(result => {
    console.log(result); // This won't execute
  })
  .catch(error => {
    console.error(error); // Output after 1 second: "An error occurred!"
  });

// Example usage demonstrating resolution:
myPromiseWithRejection(1000, "Success!", false)
  .then(result => {
    console.log(result); // Output after 1 second: "Success!"
  })
  .catch(error => {
    console.error(error); // This won't execute
  });



// Example using a real-world scenario (e.g., fetching data):

function fetchData(url) {
  return new Promise((resolve, reject) => {
    fetch(url)
      .then(response => {
        if (!response.ok) {
          throw new Error(`HTTP error! status: ${response.status}`); // Reject if HTTP error
        }
        return response.json(); // Parse JSON response
      })
      .then(data => {
        resolve(data); // Resolve with the parsed data
      })
      .catch(error => {
        reject(error); // Reject if any error occurs during fetch or parsing
      });
  });
}

// Example usage:
fetchData("https://api.example.com/data") // Replace with a real API endpoint
  .then(data => {
    console.log(data); // Process the fetched data
  })
  .catch(error => {
    console.error("Error fetching data:", error); // Handle errors
  });


These examples demonstrate how to create and use promises in JavaScript, including handling success (resolve) and failure (reject) cases, as well as integrating with asynchronous operations like fetch. Remember to replace "https://api.example.com/data" with a valid API endpoint for the fetchData example to work correctly. I've provided progressively more complex examples to help you understand the core concepts and how to apply them in practical scenarios.

标签:resolve,console,value,请用,promise,error,js,data,Example
From: https://www.cnblogs.com/ai888/p/18571462

相关文章

  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,果园信息统计管理系统的信息通过网络进行信息管理掀起了热潮,所以针对果园信......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设物......
  • Threejs的三维坐标系
    在三维空间中,所有的物体和相机都需要基于一个统一的坐标系来进行定位和操作。理解坐标系的基本概念,对于创建稳定、准确的三维效果至关重要。基础Three.js采用的是右手坐标系,这意味着如果你将右手的三个手指伸直,分别指向X、Y和Z轴的方向,你的拇指指向的方向即为X轴,食指指向......
  • JAVAJSP物业管理系统源码JSP小区管理系统源码JSP小区物业管理系统源码JSP社区管理系统
    一、项目介绍系统的使用者分为用户(业主)和管理员(物业)两类,根据使用者不同,将有不同的主页,对应不同的功能权限。将本系统分为用户子系统和管理员子系统。在用户子系统中,使用者通过账号密码(用户)登入系统,进入主页,通过主页链接,进入小区服务,小区公告,信息查询,系统功能四个功能模块,在模......
  • node.js毕设秒杀系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着互联网的迅猛发展,电子商务在全球范围内蓬勃兴起。在电子商务领域中,秒杀系统成为吸引消费者、提升销售业绩的重要营销手段。关于秒杀系统的研究,现有......
  • node.js毕设基于智能算法的健康食材订购系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于健康食材订购系统的研究,现有研究主要以传统的食材订购流程优化为主,如提高配送效率、降低成本等方面。专门针对运用智能算法来构建健康食材订购系统......
  • 1030 Travel Plan(dijsktra + dfs/bfs + 回溯)
     题面意思比较清晰,就是优先最短路,同距离取最小花费。1#include<bits/stdc++.h>2usingnamespacestd;3intn,m,s,d;4typedefpair<int,int>pii;5vector<pii>graph[505];6set<pii>min_heap;7intcost[505][505]={0};8vector<bool>v......
  • Nettt核心之Future与Promise
    在了解Future之前要明白线程同步和异步线程同步需要等待,线程异步无需等待Netty中的Future机制1,基于jdkFuture改造而来2,保留了同步获取结果的能力,也提供了异步的Listener机制Netty中的Future:Netty自己实现的Future继承了|DK的Future,新增了Listener机制,任务结束会回......
  • JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化
    目录JavaScript中通过Array.sort()实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)一、为什么要使用Array.sort()二、Array.sort()的使用与技巧1、基础语法2、返回值3、使用技巧三、Array.sort()的复杂用法与实际......
  • 最佳实践:如何在 Vue.js 项目中使用 Jest 进行单元测试
    前言随着应用程序规模和复杂性的增加,保证代码质量和稳定性变得愈发重要。单元测试作为软件测试的一部分,能够有效地捕捉代码中的错误,防止在开发过程中引入新的Bug。在众多测试框架中,Jest因其易用性、强大功能以及与Vue.js的良好兼容性,成为了许多开发者的首选。本文将详......