JavaScript中的Promise

promise语法糖-async,await

promise:Promise 对象用于表示一个异步操作的最终完成 (或失败), 及其结果值.

语法async

async function name() { statements }

async作用

  • 一个async函数能够包含0个或者多个await指令(await指令能够在停止异步函数执行,等待promise函数执行,并继续异步函数的执行并返回解析后的promise)
  • async函数返回值是一个promise对象(即使不是一个promise对象,也会成为一个隐式promise对象)
async function foo() {
   return 1
}
等价于
function foo() {
   return Promise.resolve(1)
}
async function foo() {
   throw 1
}
等价于
function foo() {
   return Promise.reject(1)
}

语法await

[return_value] = await expression;

expression:promise对象或者任何想要返回的值
return_value:返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。
例子
如果一个 Promise 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果。

function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

如果该值不是一个 Promise,await 会把该值转换为已正常处理的Promise,然后等待其处理结果。

async function f2() {
  var y = await 20;
  console.log(y); // 20
}
f2();

如果 Promise 处理异常,则异常值被抛出。

async function f3() {
  try {
    var z = await Promise.reject(30);
  } catch (e) {
    console.log(e); // 30
  }
}
f3();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavascriptPromise是一种用于处理异步操作的封装对象。在进行文件下载时,可以利用Promise来管理下载过程的异步操作。 首先,我们需要创建一个Promise对象,并将下载操作封装在其。下载通常涉及到向服务器发送请求、接收响应并处理数据。可以使用XMLHttpRequest对象来实现这些步骤。 以下是一个使用Promise进行文件下载的示例代码: ```javascript function downloadFile(url) { return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'blob'; xhr.onload = function() { if (xhr.status === 200) { resolve(xhr.response); } else { reject(Error('下载文件时出错')); } }; xhr.onerror = function() { reject(Error('下载文件时出错')); }; xhr.send(); }); } // 使用示例 downloadFile('http://example.com/file.pdf') .then(function(blob) { // 下载成功后的处理逻辑 var url = URL.createObjectURL(blob); window.location.href = url; // 在当前页面打开下载链接 }) .catch(function(error) { // 下载失败时的处理逻辑 console.error(error); }); ``` 在上述代码,首先创建一个Promise对象,并在其定义了下载的异步操作。在下载成功时,调用resolve方法并传递服务器响应的数据;在下载失败时,调用reject方法并传入一个Error对象。 然后,通过调用then方法来处理下载成功的响应,并在该回调函数进行文件处理。如果下载失败,则通过调用catch方法来捕获错误,并在该回调函数处理错误。 这样,我们就可以通过Promise来管理文件下载操作,并根据下载的结果执行相应的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值