Promise 接口异步操作

74 阅读1分钟

简介

在 JavaScript 中,Promise 是一种用于处理异步操作的对象,它代表了一个异步操作的最终完成或失败,并且其最终结果可能是一个值或者错误。通常情况下,Promise 的状态不受外界影响,一旦状态改变就不会再变。

基本使用

  1. new创建Promise异步对象
  2. Promise需要传参(参数为对象)
  3. 会返回两个函数类型的数据,resolve 表示 成功,reject 表示 失败,可以传入结果 X
  4. then 需要传两个函数,分别是成功、失败

例子:

// 创建
const promise=new Promise((resolve,reject)={ 
    // 判断什么情况是成功与失败 
    if(true){ 
        // 成功 resolve(x); 
    }else{ 
        // 失败 reject(x); 
    }     
});


// 使用
promise.then( 
    // 成功 
    (value)=>{}, 
    // 失败 
    (reason)=>{} 
)

对象状态、结果属性介绍

Promise实例中有两个属性【PromiseState】、【PromiseResult】

image.png 【PromiseState】:状态pending初始、resolved成功、rejected失败,只有两种改变,pending —>resolved、pending —>rejected

【PromiseResult】:对象的结果值,保存异步对象[成功/失败]的结果

实际案例

作用:图片/文件多个上传,控制并发

    // 上传文件
    const uploadFile = (file) => {
        const param=new FormData();
        param.append('file',file);
        return new Promise((resolve,reject) => {
            // 上传接口
            uploadFuleApi(param).then(res => {
                // 成功,可以传结果
                resolve(res);
            }).catch (err => {
                // 失败
                reject();
            })
        })
    }
    
    // 使用
    const f = async () => { 
        try { 
            // 使用方法获取上传结果
            let data = await uploadFile(file); 
            console.log('Uploaded file:', data); 
            // 其他操作 
        } catch (error) { 
            console.error('Upload failed:', error); 
            // 错误处理 
        } 
    }