Promise简单介绍

16 篇文章 4 订阅
订阅专栏
Promise是ES6引入的异步编程解决方案,它可以封装异步操作并管理其成功或失败的状态。Promise解决了回调地狱问题,支持链式调用和灵活的错误处理。通过.then()和.catch()方法,可以清晰地处理异步操作的结果和错误。同时,async/await的出现进一步简化了异步代码,使其更接近同步编程的风格。
摘要由CSDN通过智能技术生成

一、什么是Promise? 

         简单的说,Promie是ES6引入的,进行异步编程的一种新的解决方案(在ES5及之前,处理异步操作通常使用回调函数)。promise对象用来封装一个异步操作并可以获取其成功或失败的结果值。


二、为什么要使用Promise?

        支持链式调用,可以解决JavaScript中回调地狱(Callback Hell)问题;
        指定回调函数的方式更加灵活,使异步代码更易于编写和管理。


三、什么是回调地狱(Callback Hell)?

         是指在异步编程中,多个回调函数嵌套在一起形成的深层次、难以维护的代码结构。这种情况通常出现在使用回调函数处理异步操作的代码中,特别是在ES5及之前的JavaScript版本中。

asyncFunction1(opt, (...data1) => {
  asyncFunction2(opt, (...data2) => {
      asyncFunction3(opt, (...data3) => {
          asyncFunction4(opt, (...data4) => {
                  //... more nested callbacks ...
            });
        });
    });
});

        在上述代码中,每个异步操作的结果都依赖于前一个操作的结果,导致嵌套的回调函数越来越多,代码变得难以维护和理解。
        由此可以看出回调地狱的问题:

  • 可读性差:由于多个层级的回调函数,代码变得晦涩难懂,可读性大大降低。
  • 错误处理困难:在回调地狱中,错误处理需要在每个回调函数中进行,导致错误处理代码重复和冗余。 
  • 增加维护成本:当代码逻辑需要修改时,需要深入多层回调来理解和修改,增加了维护成本。 

四、Promise对象三种状态: 

  • Pending(进行中):初始状态,表示异步操作正在进行中。
  • Fulfilled(已成功):异步操作成功完成,并返回了结果,此时Promise会进入已成功状态。
  • Rejected(已失败):异步操作失败,出现错误,并返回错误信息,此时Promise会进入已失败状态。

        一个Promise对象一旦进入Fulfilled(已成功)或Rejected(已失败)状态,就称为“settled”状态,这个状态不可改变。      


五、创建Promise的一般语法:

const myPromise = new Promise((resolve, reject) => {
  // 异步操作代码
  // 如果操作成功,调用 resolve(value)
  // 如果操作失败,调用 reject(error)
});

六、Promise对象的主要方法:

        Promise对象的主要方法是`.then()`和`.catch()`,通过这两个方法可以处理异步操作的结果和错误:

  • .then(onFulfilled) :当Promise进入Fulfilled状态时,会调用`onFulfilled`函数来处理异步操作的成功结果。
  • .catch(onRejected):当Promise进入Rejected状态时,会调用`onRejected`函数来处理异步操作的失败情况。
function fetchUserData() {
  return new Promise((resolve, reject) => {
    // 模拟异步操作
    setTimeout(() => {
      const success = true; // 模拟成功情况,可以根据实际情况设置
      if (success) {
        const data = { name: "John", age: 30 };
        resolve(data); // 成功时调用resolve,并传递结果
      } else {
        reject("Error: Unable to fetch user data"); // 失败时调用reject,并传递错误信息
      }
    }, 2000); // 模拟异步延迟2秒
  });
}

// 使用Promise
fetchUserData()
  .then((data) => {
    console.log("User data:", data);
  })
  .catch((error) => {
    console.error("Error:", error);
  });

效果展示:
成功: 

失败: 


七、回调函数和Promise对比示例:

        示例1,使用回调函数处理异步操作:

// 假设有一个异步函数,用于模拟从服务器获取数据
function fetchDataFromServer(callback) {
  setTimeout(() => {
    const data = { message: "Data received from server" };
    // 模拟成功获取数据
    callback(null, data); // 第一个参数为错误对象,null表示没有错误
    // 模拟出现错误的情况
    // callback("Error: Unable to fetch data");
  }, 2000); // 模拟异步延迟2秒
}

// 使用回调函数获取数据
fetchDataFromServer((error, data) => {
  if (error) {
    console.error("Error:", error);
  } else {
    console.log("Data:", data);
  }
});

效果展示:
成功:  

失败:  

        在上述示例1中,fetchDataFromServer函数接受一个回调函数作为参数,并在异步操作完成后调用该回调函数。回调函数的第一个参数通常用于传递错误信息,第二个参数用于传递成功的结果。

        示例2,使用Promise处理异步操作:

// 假设有一个异步函数,用于模拟从服务器获取数据
function fetchDataFromServer() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const success = true; // 模拟成功情况,可以根据实际情况设置
      if (success) {
        const data = { message: "成功接收到数据" };
        resolve(data); // 成功时调用resolve,并传递结果
      } else {
        reject("接收数据失败!"); // 失败时调用reject,并传递错误信息
      }
    }, 2000); // 模拟异步延迟2秒
  });
}

// 使用Promise获取数据
fetchDataFromServer()
  .then((data) => {
    console.log("Data:", data);
  })
  .catch((error) => {
    console.error("Error:", error);
  });

效果展示:
成功:   

 失败:  

        在上述示例2中,fetchDataFromServer函数返回一个Promise对象。通过.then()方法处理成功的情况,通过.catch()方法处理失败的情况。

        示例1和示例2对比分析: 

  • 使用回调函数时,代码会出现多层嵌套,可能导致回调地狱,特别是当处理多个异步操作时。
  • 使用Promise时,通过链式调用.then().catch(),代码结构更加清晰和易于阅读。

 八、举例其他异步函数操作:

        举简单的例子,在fs文件操作、数据库操作、AJAX操作以及定时器中,如何使用回调函数和Promise函数,进行对照学习。

        8.1、文件操作(fs): 

         使用回调函数:

//使用Node.js的fs模块进行文件读取
const fs = require('fs');

// 使用回调函数读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('Error:', err);
  } else {
    console.log('Data from file:', data);
  }
});

效果展示:
成功:

 失败:  

        使用Promise: 

const fs = require('fs/promises');

// 使用Promise读取文件
fs.readFile('example.txt', 'utf8')
  .then((data) => {
    console.log('Data from file:', data);
  })
  .catch((err) => {
    console.error('Error:', err);
  });

效果展示:
成功: 

  失败:  

        8.2、数据库操作: 

        首先,确保已经安装了mysql2库(或其他MySQL连接库),然后通过该库来连接数据库。 

npm install mysql2

        使用回调函数:

//此处使用Mysql数据库进行数据查询
const mysql = require('mysql2');

// 创建数据库连接池
const pool = mysql.createPool({
  host: 'your_database_host',
  user: 'your_database_user',
  password: 'your_database_password',
  database: 'your_database_name',
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
});

// 示例:执行查询操作
const query = 'SELECT * FROM account WHERE money > ?';
const values = [1000];

pool.getConnection((err, connection) => {
  if (err) {
    console.error('Error:', err);
    return;
  }

  connection.query(query, values, (error, results) => {
    connection.release();

    if (error) {
      console.error('Error:', error);
    } else {
      console.log('Query results:', results);
    }
  });
});

效果展示:
成功:

 

失败:  

        使用Promise:  

const mysql = require('mysql2');

// 创建数据库连接池
const pool = mysql.createPool({
  host: 'your_database_host',
  user: 'your_database_user',
  password: 'your_database_password',
  database: 'your_database_name',
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
});

// 封装查询操作为Promise函数
function executeQuery(query, values) {
  return new Promise((resolve, reject) => {
    pool.getConnection((err, connection) => {
      if (err) {
        reject(err);
        return;
      }

      connection.query(query, values, (error, results) => {
        connection.release();

        if (error) {
          reject(error);
        } else {
          resolve(results);
        }
      });
    });
  });
}

// 示例:执行查询操作
const query = 'SELECT * FROM account WHERE monrey > ?';
const values = [1000];

executeQuery(query, values)
  .then((results) => {
    console.log('Query results:', results);
  })
  .catch((error) => {
    console.error('Error:', error);
  });

效果展示:
成功:

失败:  

        8.3、AJAX操作: 

         使用回调函数:

function sendAJAX(url, successCallback, errorCallback) {
  const xhr = new XMLHttpRequest();
  xhr.responseType = 'json';
  xhr.open('GET', url);
  xhr.send();

  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
      if (xhr.status >= 200 && xhr.status < 300) {
        successCallback(xhr.response);
      } else {
        errorCallback(xhr.status);
      }
    }
  };
}

// Example usage with callbacks
sendAJAX(
  'https://api.apiopen.top/getJoke',
  function (data) {
    console.log('Data:', '请求成功');
  },
  function (error) {
    console.error('Error:', '请求失败');
  }
);

效果展示:
成功:

失败:   

 

        使用Promise:  

function sendAJAX(url){
	return new Promise((resolve,reject)=>{
		const xhr = new XMLHttpRequest();
		xhr.responseType = 'json';
		xhr.open("GET",url);
		xhr.send();
		//处理结果
		xhr.onreadystatechange = function(){
			if(xhr.readyState === 4 ){
				//判断成功
				if(xhr.status >= 200 && xhr.status <300){
					resolve(xhr.response);
				}else{
					reject(xhr.status);
				}
			}
		}
	})
}
// Example usage with Promise
sendAJAX('https://api.apiopen.top/getJoke')
	.then((data) => {
		console.log('Data:',"请求成功");
	})
	.catch((error) => {
		console.error('Error:', "请求失败");
	});

效果展示:
成功:

失败:   

 

        8.4、定时器:

         使用回调函数:

//此处使用定时器函数setTimeout和setInterval进行操作
// 使用回调函数实现定时器
function doSomething(callback) {
  setTimeout(() => {
    console.log('Doing something...');
    callback();
  }, 2000); // 2秒后执行回调
}

// 使用回调函数执行定时器操作
doSomething(() => {
  console.log('Callback executed after 2 seconds.');
});

        使用Promise:  

// 使用Promise实现定时器
function doSomething() {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log('Doing something...');
      resolve();
    }, 2000); // 2秒后resolve
  });
}

// 使用Promise执行定时器操作
doSomething()
  .then(() => {
    console.log('Promise resolved after 2 seconds.');
  });

 效果展示:


九:Promise函数基本流程和相关API: 

        综上学习,可以看到Promise函数的基本流程如图所示:

         除了上述看到的Promise.resolved()、Promise.rejected()、Promise.then()、Promise.catch(),其他常用的API还有:Promise.all(iterable)、Promise.race(iterable)等等。

        Promise.all(iterable):接收一个可迭代对象iterable(如数组或类数组对象),返回一个新的Promise对象。该Promise对象在iterable中的所有Promise对象都解决(Fulfilled)时才会解决,并将所有解决结果以数组形式返回;如果iterable中有任何一个Promise对象拒绝(Rejected),则该Promise对象立即拒绝,并返回第一个拒绝的原因。 

const promise1 = Promise.resolve(1);
const promise2 = Promise.resolve(2);
const promise3 = Promise.resolve(3);

Promise.all([promise1, promise2, promise3])
  .then((values) => {
    console.log(values); // Output: [1, 2, 3]
  })
  .catch((error) => {
    console.error(error);
  });

效果展示: 

        Promise.race(iterable):类似于Promise.all(),但是只要iterable中的任何一个Promise对象解决或拒绝,返回的Promise对象就会立即解决或拒绝,并采用第一个解决或拒绝的结果。 

const promise1 = new Promise((resolve) => setTimeout(resolve, 1000, "one"));
const promise2 = new Promise((resolve) => setTimeout(resolve, 2000, "two"));

Promise.race([promise1, promise2])
  .then((value) => {
    console.log(value); // Output: "one" (promise1 resolves faster)
  })
  .catch((error) => {
    console.error(error);
  });

效果展示: 


十:async函数和await表达式

        10.1 async函数 

         函数的返回值为promise对象,且promise对象的结果是由async函数的返回值决定。它其实是用来定义一个返回 Promise 对象的异步函数。

async function main(){

}
let result = main();
console.info(result);

        此时看控制台可以看到,返回值是一个promise对象,且状态是"fulfilled"(已成功)。

         1.如果返回的值是一个非Promise类型的数据:

  <body>
    <script>
        async function main(){
            // 1.如果返回的值是一个非Promise类型的数据,则return什么,值就是什么。
            return 1234;
        }
        let result = main();
        console.info(result);
    </script>
  </body>

效果展示: 

        2.返回的是一个Promise对象: 

 <body>
    <script>
        async function main(){
            // 1.如果返回的值是一个非Promise类型的数据,则return什么,值就是什么。
            // return 1234;
            // 2.如果返回的是一个Promise对象
            return new Promise((resolve,reject)=>{
                // resolve('成功!')
                reject("失败!请注意观察一下状态值。")
            })
        }
        let result = main();
        console.info(result);
    </script>
  </body>

成功: 

失败: 

        3.直接抛出一个异常: 

  <body>
    <script>
        async function main(){
            // 1.如果返回的值是一个非Promise类型的数据,则return什么,值就是什么。
            // return 1234;
            // 2.如果返回的是一个Promise对象
            // return new Promise((resolve,reject)=>{
            //     // resolve('成功!')
            //     reject("失败!请注意观察一下状态值。")
            // })
            // 3.直接抛出一个异常
            throw "哎呀  直接是异常啦!请注意观察一下状态值。"
        }
        let result = main();
        console.info(result);
    </script>
  </body>

效果展示: 

        10.2 await 表达式

        await右侧的表达式一般为promise对象,返回的是promise成功的值。若是表达式时其他值,则直接将此值作为await的返回值。
        注意:await必须写在async函数中,但是async函数中可以没有await。若是await中的promise失败了,就会抛出异常,需要通过try...catch捕获处理。

         1、直接使用await:

  <body>
    <script>
        // 直接使用await
        await 100;
    </script>
  </body>

效果展示: 
         2.右侧为promise对象:

  <body>
    <script>
        // 1.直接使用await
        // await 100;
        // 2.右侧为promise对象
        async function main(){
            let p = new Promise((resolve,reject)=>{
                resolve("成功!");
            })
            let res = await p;
            console.info(res);
        }
        main();
    </script>
  </body>

效果展示:  

        3.右侧为其他: 

  <body>
    <script>
        // 1.直接使用await
        // await 100;
        // 2.右侧为promise对象
        async function main(){
            let p = new Promise((resolve,reject)=>{
                resolve("成功!");
            })
            // let res = await p;
            // 2.右侧为其他类型的数据,不常用
            let res = await "其他类型数据";
            console.info(res);
        }
        main();
    </script>
  </body>

效果展示: 

        4. promise是失败的状态:

  <body>
    <script>
        // 1.直接使用await
        // await 100;
        // 2.右侧为promise对象
        async function main(){
            let p = new Promise((resolve,reject)=>{
                // resolve("成功!");
                reject("promise失败的情况")
            })
            // let res = await p;
            // 2.右侧为其他类型的数据,不常用
            // let res = await "其他类型数据";
            // 3.promise是失败的状态:需要使用try...catch
            try {
                let res = await p;
            } catch (error) {
                console.info(error);
            }
        }
        main();
    </script>
  </body>

 效果展示: 

        10.3 async和await结合使用

         使用回调函数实现实例:

//使用Node.js的fs模块进行文件读取
const fs = require('fs');

// 使用回调函数读取文件
fs.readFile('./example.txt', 'utf8', (err, data1) => {
  if(err) throw err;
  fs.readFile('./example2.txt', 'utf8', (err, data2) => {
    if(err) throw err;
    fs.readFile('./example3.txt', 'utf8', (err, data3) => {
      if(err) throw err;
      console.log(data1 + data2 + data3)
    });
  });
});

        使用async函数+await实现示例: 

const fs = require('fs');
const util = require('util');
const mineReadFile = util.promisify(fs.readFile);
async function main(){
  try {
    let data1 = await mineReadFile('./example.txt');
    let data2 = await mineReadFile('./example2.txt');
    let data3 = await mineReadFile('./exampl23.txt');
    console.log(data1 + data2 + data3)
  } catch (error) {
    console.log(error)
  }
}
main();

效果展示:
成功:

失败: 


十一:总结

        Promise对象是用于处理异步操作的特殊对象,通过其构造函数创建,并传递一个executor函数,内部包含异步操作,当异步操作完成时,通过resolve方法将Promise对象从Pending状态转换为Fulfilled状态,将结果传递给处理函数;若异步操作失败,则通过reject方法将Promise对象转换为Rejected状态,传递错误信息。我们可以使用.then()和.catch()来处理成功和失败的情况,使得异步编程更加清晰、简洁,避免回调地狱,提供了更强大的异步编程能力。 

promise 是什么?为什么用promise?怎样使用promise?拓展 async与await?事件循环?
a1016428360的博客
09-05 427
一、promise 是什么 1、Promise 是 JS 中解决异步编程的一种方案。 拓展:js中解决异步编程的方案有哪些?优缺点分别是什么? ) 简单的说,从语法上Promise 是一个构造函数;从功能上promise 对象用来封装一个异步操作并可以获取其结果 2、状态 promise有三种状态,分别是 pending(进行中)、resolved(成功)、rejected(失败) promise的状态改变(只有2种, 只能改变一次) pending变为resolved pending
Promise 概念简单介绍
qiqiyiyi_的博客
06-19 810
Promise 概念简单介绍 1、Promise 是什么?         Promise 是一个对象,对象里存储一个状态,这个状态是可以随着内部的执行转化的。简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。promise 有三种状态:等待中(Pending)、已完成(Fulfilled)、已失败(Rejected)。 2、Promise 作用 主要用于异步计算 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果 可以在对
promise是什么?
笔记
02-22 483
转载地址:https://www.jianshu.com/p/1b63a13c2701 promise是什么? 1、主要用于异步计算 2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果 3、可以在对象之间传递和操作promise,帮助我们处理队列 为什么会有promise? 为了避免界面冻结(任务) 同步:假设你去了一家饭店,找个位置,叫来服务员,这个时候服务员对你说,对不起我是“同步”服务员,我要服务完这张桌子才能招呼你。那桌客人明明已经吃上了,你只是想要个菜单,这么小的动作,
Promise详解、自定义
最新发布
weixin_45691995的博客
09-10 1269
/定义Promise对象的属性//保留实例对象的this的值//resolve函数//reject函数//同步调用[执行器函数]
promise简单介绍
weixin_45817492的博客
05-26 5050
promise简单介绍1. promise是什么?2.promise的特点2.1 promise的三种状态2.2 状态改变情况3.promise语法4.一些基本用法4.1 then 的用法4.2 reject的用法4.3 catch的用法 1. promise是什么? promise是解决异步问题的一种解决方案(但是它本身不是异步的),它本质上是一个对象,用于获取异步的一些消息。 promise有三种状态: pending(等待态),fulfiled(成功态),rejected(失败态);状态一旦改变,就
你不知道的JavaScript--Item34 大白话讲解Promise
小平果的欢乐谷
03-12 3582
去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之一,我们有必要掌握并理解透彻。本文将由浅到深,讲解Promise的基本概念与使用方法。ES6 Promise 先拉出来遛遛一、Promise小试复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么玩意呢?是一个类
Promise 简介
weixin_34068198的博客
06-25 257
译者注: 到处是回调函数,代码非常臃肿难看, Promise 主要用来解决这种编程方式, 将某些代码封装于内部。 Promise 直译为“承诺”,但一般直接称为 Promise; 代码的可读性非常重要,因为开发人员支出一般比计算机硬件的支出要大很多倍。 虽然同步代码更容易跟踪和调试, 但异步方式却具有更好的...
Promise简单介绍与使用
sen_03的博客
10-28 334
一.Promise介绍 1.Promise的由来 (1)Promise是es6提出来的一个非常重要的一个语法 (2)Promise是一种‘处理异步’的解决方案 用“同步编写代码”的方式“处理异步”的一种解决方案,解决回调地狱的问题 2.Promise简单介绍 (1)Promise是一个构造函数 (2)() 参数里是一个回调函数 resolve : fn =>成功操作 调用resolve reject : fn => 失败操作 调用 reject (3) Promise里面放一个异步操作
nodejs中简单实现Javascript Promise机制的实例
10-25
本文将详细介绍如何在Node.js中通过代码示例简单实现Promise/A+规范。 首先,我们需要理解Promise/A+规范的核心内容。Promise/A+规范是一份为JavaScript中的Promise定义实现的行为规范,该规范由一系列具体的要求和...
C++11 future中std::promise 介绍
12-20
下面是一个使用 `std::promise` 和 `std::future` 进行线程间通信的简单示例: ```cpp #include #include void async_function(std::promise<int>& prom) { // 在这里执行耗时操作 int result = compute_...
Promise原理介绍和实现.docx
05-06
Promise原理介绍与实现》 PromiseJavaScript中用于处理异步操作的重要工具,它通过解决回调地狱的问题,使得异步编程更加清晰、可维护。理解Promise的原理与实现,对于编写高质量的JavaScript代码至关重要。 ...
Promise详解
Zheng_xinle的博客
09-06 5104
promise 一、什么是PromisePromise简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果 从语法上说,promise 是一个对象,从它可以获取异步操作的的最终状态(成功或失败)。 Promise是一个构造函数,对外提供统一的 API,自己身上有all、reject、resolve等方法,原型上有then、catch等方法。 它也是异步编程的解决方案,他也是一种承诺,承诺过一段时间,会给你一个结果, 二、为什么有Promises这个东西 同步的方式写异
Promise基本介绍
果车的博客
07-29 1322
Promise学习之前我们先来掌握以下几个概念:1、区别实例对象和函数对象 。2、回调函数的分类。 一、区别实例对象和函数对象: 函数对象:将函数作为对象使用,简称为函数对象。 function Fn(){ } console.log(Fn.prototype); 注:函数是对象,当函数操作其属性或者方法时函数作为对象使用。 实例对象:new函数产生的对象,简称为对象。 function Fn(){ }
promise介绍
chenhqcc的博客
11-09 259
promise使用 new Promise返回的对象称之为Promise对象 三种状态: pending 正在进行 fulfilled 已完成 rejected 已失败 1. new Promise 接收一个函数 executor 2. 函数 executor 接收两个参数,resolve,reject 调用resolve的时候,把promise对象转成成功状态 ...
Promise介绍
m0_51371862的博客
09-22 174
一、promise基本概念 1.1 回调问题 在平常敲代码中经常会遇到多层回调函数的相互嵌套问题。如下: 这会使得代码耦合性太强,牵一发而动全身,难以维护 。大量冗余的代码相互嵌套,代码的可读性变差。 1.2 如何解决回调问题 为了解决回调过深的问题,ES6(ECMAScript 2015)中新增了 Promise 的概念。 1.3Promise 的基本概念 Promise 是一个构造函数 我们可以创建 Promise 的实例 const p = new ...
Promise简单介绍
Little_Pig_Bug的博客
07-16 400
Promise的字面意思就是"承诺",是对未来发生事情成功与否的承诺,所以要么是成功 ,即将pending(等待)状态转为fullfilled(成功)状态,否则将pending状态转为rejected(失败),所以由此可知,Promise是一种异步操作。这是不是让我们想到了ajax?对!ajax就是将Promise进行封装得来的。(阅读这篇文章之前,最好具备es6简单语法的技能,比如const,箭...
Promise
亚洲的博客
11-24 314
Promise 名词约定 一般来讲,有以下的名词约定: promise(首字母小写) 对象指的是“Promise实例对象” Promise 首字母大写且单数形式,表示“Promise构造函数” Promises 首字母大写且复数形式,用于指代“Promises规范” 什么是Promise? Promise简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。 从语法上说,promise 是一个对象,从它可以获取异步操作的的最终状态(成功或失败) Promise是一
Promise构造函数来解决地狱回调问题
weixin_33875839的博客
12-02 95
简介 Promise 是一个 构造函数,既然是构造函数, 那么,我们就可以 new Promise() 得到一个 Promise 的实例; 在 Promise 上,有两个函数,分别叫做 resolve(成功之后的回调函数) 和 reject(失败之后的回调函数) 在 Promise 构造函数的 Prototype 属性上,有一个 .then() 方法,也就说,只要是 Promise 构造函数创...
简单介绍一下 promise
08-25
PromiseJavaScript 中用于处理异步操作的一个对象,它代表了一个可能在未来某个时刻才会完成的操作,并且这个操作的结果可能是成功完成,也可能是以失败告终。Promise 有三种状态: 1. pending(进行中):初始...
写文章

热门文章

  • Idea 如何安装插件 25505
  • VSCode:终端控制台常用指令 18799
  • input输入框限制输入长度、限制输入内容 8848
  • VBA:更改日期格式为文本格式 7205
  • Spring八大模块 3939

分类专栏

  • Web端学习 16篇
  • Spring学习 2篇
  • 后端学习 11篇
  • ExcelVBA 7篇

最新评论

  • vue学习计划

    是小爱呀: 不好意思,写完就没有存档了

  • 引入spring-context依赖飘红问题

    羽139: 为什么会有警告啊

  • vue学习计划

    2406_85622066: 求一份vue程序设计代码

  • input输入框限制输入长度、限制输入内容

    LewisRoc: 直接复制粘贴能控制么

  • VSCode:终端控制台常用指令

    aaaaabuu: 下载文件的指令是什么呢

大家在看

  • 【AI大模型】深入Transformer架构:输入和输出部分的实现与解析 1269
  • 基于AIACC加速器快速实现LLaMA-7B指令微调 109
  • 手动部署LNMP环境(Alibaba Cloud Linux 3/2、CentOS 7/8) 1380
  • Java进阶学习笔记47——Set集合1
  • Springboot美容院管理系统njk50(程序+源码+数据库+调试部署+开发环境)

最新文章

  • 过滤器Filter和数组的filter()方法
  • 计算属性computed和侦听器watch的区别
  • CSS浮动引起的问题和解决方案
2024年6篇
2023年31篇
2022年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家广东户外玻璃钢雕塑市场树脂玻璃钢雕塑展览会河南玻璃钢景观雕塑制作厂家玻璃钢仿铜小天使雕塑河北主题商场美陈市场南京知名玻璃钢雕塑性价比高玻璃钢和铸铜雕塑有什么区别商场美陈讲解古代玻璃钢卡通雕塑怎么样昆明步行街玻璃钢雕塑多少钱芜湖卡通玻璃钢雕塑公司佛山玻璃钢黄鹂鸟雕塑玻璃钢瓜果雕塑厂广州公园玻璃钢雕塑定制玻璃钢古铜雕塑宁夏仿真玻璃钢雕塑多少钱福州玻璃钢雕塑公司厂家玻璃钢q版小和尚雕塑定西户外玻璃钢雕塑定做肇庆玻璃钢仿真雕塑湘潭玻璃钢雕塑价格多少钱天津火烈鸟玻璃钢雕塑定做白城玻璃钢雕塑公司商场玻璃钢雕塑摆件报价齐齐哈尔人物玻璃钢雕塑价格广安成都商场美陈甘肃玻璃钢海盗船雕塑河南玻璃钢花盆批发北京玻璃钢雕塑人像贵阳商场美陈展示香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化