美文网首页
JavaScript中的Promise

JavaScript中的Promise

作者: 鱿鱼炸酱面 | 来源:发表于2021-07-05 14:55 被阅读0次

定义

先统一执行某个逻辑,不关心如何处理结果,然后,根据结果是成功还是失败,在将来的某个时候调用某个回调函数。这种“承诺将来会执行”的对象在JavaScript中称为Promise对象。

实现

创建一个Promise对象,在内部函数中需要的位置调用ok, file形式参数,然后对Promise对象分别定义then和catch时候要执行的回调函数,注意正常时候调用ok,失败时候调用fail:

new Promise((ok, fail) => {
  var a = Math.random() * 2;
  if (a <= 1) {
    ok(a);
  }
  else {
    fail('大于1,不合法')
  }
}).then((s) => { console.log('随机数:' + s) }).catch((s) => { console.log(s) })

扩展

Promise还可以做更多的事情,比如,有若干个异步任务,需要先做任务1,如果成功后再做任务2,任何任务失败则不再继续并执行错误处理函数。要串行执行这样的异步任务,不用Promise需要写一层一层的嵌套代码。有了Promise,我们只需要简单地写:

job1.then(job2).then(job3).catch(handleError);

其中,job1、job2和job3都是Promise对象。

Promise还可以并行执行异步任务,用Promise.all()传入多个Promise对象实现:

var p1 = new Promise(function (resolve, reject) {
    setTimeout(resolve, 500, 'P1');
});
var p2 = new Promise(function (resolve, reject) {
    setTimeout(resolve, 600, 'P2');
});
// 同时执行p1和p2,并在它们都完成后执行then:
Promise.all([p1, p2]).then(function (results) {
    console.log(results); // 获得一个Array: ['P1', 'P2']
});

多个异步任务时候如果只需要获得先返回的结果时,用Promise.race()实现:

var p1 = new Promise(function (resolve, reject) {
    setTimeout(resolve, 500, 'P1');
});
var p2 = new Promise(function (resolve, reject) {
    setTimeout(resolve, 600, 'P2');
});
Promise.race([p1, p2]).then(function (result) {
    console.log(result); // 'P1'
});

由于p1执行较快,Promise的then()将获得结果'P1'。p2仍在继续执行,但执行结果将被丢弃。

相关文章

  • javascript中的promise

    javascript中的promise

  • 理解Promise in JavaScript

    Promise是JavaScript中的一个核心概念,初学JavaScript,对Promise的概念和用法都比较...

  • 深入了解下Promise

    Promise 意义 Promise 的诞生与 Javascript 中异步编程息息相关,js 中异步编程主要指 ...

  • promise

    promise是什么 promise是一个对象“承诺将来会执行”的对象在JavaScript中称为Promise对...

  • javascript中Promise

    1.Promise是什么? Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理...

  • Promise async/await

    Promise async/await 参考初探promise promise 理解 JavaScript ...

  • javascript 中的 Promise

    原创性声明:本文完全为笔者原创,请尊重笔者劳动力。转载务必注明原文地址。 发现有一段时间没有写文章了,中了一段时间...

  • javascript中的Promise

    Promise in js 回调函数真正的问题在于他剥夺了我们使用 return 和 throw 这些关键字的能力...

  • JavaScript中的Promise

    定义 先统一执行某个逻辑,不关心如何处理结果,然后,根据结果是成功还是失败,在将来的某个时候调用某个回调函数。这种...

  • JavaScript 中的 Promise

    基本用法 Promise 接受一个 function 作为参数,该 function 被称作 executor, ...

网友评论

      本文标题:JavaScript中的Promise

      本文链接:https://www.haomeiwen.com/subject/rvfiultx.html