JavaScript Promise 教程

2024-12-09 0 904

JavaScript Promise 教程

介绍

在JavaScript中,Promise是一种用于处理异步操作的对象。它允许你为异步代码的成功和失败指定回调函数,使代码更加清晰和易于管理。

基本用法

一个Promise对象代表一个最终可能完成(fulfilled)或失败(rejected)的异步操作及其结果值。Promise有三种状态:

  • pending(进行中)
  • fulfilled(已成功)
  • rejected(已失败)

创建一个Promise

你可以使用`new Promise()`构造函数来创建一个新的Promise。

let promise = new Promise(function(resolve, reject) {
    // 异步操作代码
    if (/* 操作成功 */) {
        resolve(value); // 将promise的状态从"pending"变为"fulfilled"
    } else {
        reject(error); // 将promise的状态从"pending"变为"rejected"
    }
});

使用Promise处理异步操作

使用Promise,你可以通过`.then()`和`.catch()`方法来处理成功和失败的情况。

示例:使用Promise加载图片

以下是一个使用Promise来加载图片的示例:

function loadImage(url) {
    return new Promise((resolve, reject) => {
        const image = new Image();
        
        image.onload = () => {
            resolve(image);
        };

        image.onerror = (error) => {
            reject(error);
        };

        image.src = url;
    });
}

// 使用loadImage函数
loadImage('https://example.com/path/to/image.jpg')
    .then(image => {
        document.body.appendChild(image);
        console.log('图片加载成功!');
    })
    .catch(error => {
        console.error('图片加载失败:', error);
    });

在上面的示例中,`loadImage`函数返回一个Promise对象,该对象在图片成功加载时调用`resolve`方法,在图片加载失败时调用`reject`方法。然后通过`.then()`和`.catch()`方法来处理成功和失败的情况。

链式调用和Promise.all

Promise支持链式调用,允许在一个Promise完成后继续执行下一个Promise。此外,你还可以使用`Promise.all`方法来并行运行多个Promise。

示例:链式调用和Promise.all

function asyncTask1() {
    return new Promise(resolve => {
        setTimeout(() => resolve('任务1完成'), 1000);
    });
}

function asyncTask2() {
    return new Promise(resolve => {
        setTimeout(() => resolve('任务2完成'), 2000);
    });
}

asyncTask1()
    .then(result1 => {
        console.log(result1);
        return asyncTask2();
    })
    .then(result2 => {
        console.log(result2);
    })
    .catch(error => {
        console.error('任务失败:', error);
    });

Promise.all([asyncTask1(), asyncTask2()])
    .then(results => {
        console.log('所有任务完成:', results);
    })
    .catch(error => {
        console.error('任务失败:', error);
    });

在上面的示例中,`asyncTask1`和`asyncTask2`分别返回在两个不同时间完成的Promise。你可以链式调用它们,也可以并行运行它们并等待所有任务完成。

JavaScript
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

本站尊重知识产权,如知识产权权利人认为平台内容涉嫌侵犯到您的权益,可通过邮件:8990553@qq.com,我们将及时删除文章
本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除

腾谷资源站 JavaScript JavaScript Promise 教程 https://www.tenguzhan.com/3175.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务