JavaScript 承诺 - 现代 JS

2022/11/8 1:24:02

本文主要是介绍JavaScript 承诺 - 现代 JS,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

加工

创建承诺时,它处于挂起状态,这意味着该过程尚未完成。如果进程成功完成,则状态将更改为“已完成”,如果进程由于某些错误而失败,则状态将更改为“已拒绝”。

您可以想到从服务器请求数据时处于挂起状态的情况。如果成功检索信息,它将处于已履行状态,否则由于某些错误,它将处于拒绝状态。

 

创造承诺

创建承诺很简单,我们使用构造函数。构造函数将回调函数作为参数。该函数将两个函数作为参数,即 and。Promise()resolve()reject()

如果承诺成功完成,则调用该函数。如果发生某些错误,则调用该函数。resolve()reject()

let myPromise = new Promise(function(resolve, reject)
{
    // some producing code... (Code that may take some time)
});

 

有承诺的计划

让我们看一个简单的JavaScript程序,该程序通过检查候选人的年龄来检查候选人是否有资格投票。假设下面的程序是异步的,所以这就是我们将如何使用 Promise 来处理它。

const age = 19;
let statusCheck = new Promise(function(resolve, reject)
{
    if (age >= 18)
    {
        // promise will be fulfilled if the condition is true
        resolve("Eligible to vote");
    }
    else 
    {
        // promise will be rejected if the condition failed
        reject("Not eligible to vote");
    }
})
console.log(statusCheck);
// Output: Promise { 'Eligible to vote' }

上面的程序创建了一个承诺,如果进程成功,则 i.e.and.is 使用两个函数,如果进程失败,则使用两个函数。
如果年龄值大于或等于 18,则上述程序将得到满足,否则将调用函数,输出将为:
resolve()reject()resolve()reject()reject()
Promise { <rejected> 'Not eligible to vote' }

 

JavaScipt承诺链

承诺有助于一个接一个地处理多个异步任务。这些方法用于将进一步的操作与已解决的承诺相关联。此外,这些方法返回可以链接的承诺。Promise.prototype.then()Promise.prototype.catch()Promise.prototype.finally()

JavaScript .then() 方法

该方法有两个参数;第一个参数是承诺的已满足情况的回调函数,第二个参数是承诺被拒绝情况的回调函数。每个方法返回一个新生成的可以链接的 promise 对象。.then().then()

方法的语法,.then()

promiseObject.then(handleFulfilled, handleRejected);

它可以像这样链接,

promiseObject
    .then(handleFulfilledA, handleRejectedA)
    .then(handleFulfilledB, handleRejectedB)
    .then(handleFulfilledC, handleRejectedC)

JavaScript 承诺有两个参数,成功和失败。两者都是可选的,因此您只能添加其中一个或两个。您只能在最后一个方法之后添加分号,否则它会破坏链条。;.then()

let chainedPromises = new Promise(function(resolve, reject)
{
    resolve("1. JavaScript Promise Resolved");
})

chainedPromises
    .then((result) => {
        console.log(result);
    })
    .then((result) => {
        console.log("2. Chaining in promises")
    })
    .then((result) => {
        console.log("3. Last method")
    })

输出

1. JavaScript Promise Resolved
2. Chaining in promises
3. Last method

在这里,每个方法都返回一个新创建的链式承诺对象。处理继续到下一个链接,即使任何一个缺少返回承诺对象的回调函数,这意味着每个拒绝回调函数都被省略,直到 finalmethod。.then().then().catch()

JavaScript .catch() 方法

该方法与成功履行承诺时没有回调函数槽的方法相同。它用于处理承诺被拒绝的情况。例如.catch().then()

let chainedPromises = new Promise(function(resolve, reject)
{
    reject("1. JavaScript Promise Rejected");
})

chainedPromises
    .then((result) => {
        console.log(result);
    })
    .then((result) => {
        console.log("2. Chaining in promises")
    })
    .then((result) => {
        console.log("3. Last method")
    })
    .catch((result) => {
        console.log(result);
    })

输出

1. JavaScript Promise Rejected

在上面的代码中,只执行该方法,因为承诺被拒绝。该方法用于处理承诺中的错误。.catch().catch()

JavaScript .final() 方法

该方法用于定义要运行的代码块,而不考虑结果。它计划在承诺结算时调用的回调函数。



这篇关于JavaScript 承诺 - 现代 JS的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程