在jQuery中递延和承诺对象
#javascript #网络开发人员 #编程 #jquery

jQuery 是一个开源JavaScript库,简化了HTML/CSS文档之间的相互作用,或更准确地说是文档对象模型(DOM)和JavaScript。当今唯一满足设计师和程序员需求的库是JQuery。

递延对象

jQuery中的递延对象是一个可以创建 Promise 并将其状态更改为解决的对象,被拒绝。当执行异步任务的函数时,它将创建。

使用递延对象的基本语法是 -

var deferred = $.Deferred();

deferred.done(function(result) {
    // success callback
}).fail(function(error) {
    // failure callback
}).progress(function(progress) {
    // progress callback
});

承诺对象

承诺对象是对未来价值的承诺。它可用于注册回调,该回调将在成功完成时执行。

使用Promise对象的基本语法是 -

var promise = $.ajax({url: 'example.com/api/data'});

promise.done(function(result) {
    // success callback
}).fail(function(error) {
    // failure callback
}).always(function() {
    // callback to be executed regardless of success or failure
});

deferred and promise

递延对象中使用的方法 -

  • 分辨([args]):它可以解决递延对象并触发所有成功的回调。

  • 拒绝([args]):它拒绝递延对象并触发所有失败的回调。

  • 完成(回调):成功解决递延对象时要执行的回调。

  • 失败(回调):它会在拒绝延期对象时注册要执行的回调。

  • 进度(回调):它在延期对象发送进度更新时要执行一个回调。

  • 始终(回调):它注册一个要执行的回调,无论是否解决或拒绝递延对象。

承诺对象中使用的方法 -

  • 完成(回调):它在成功解决承诺对象时要执行一个回调。

  • 失败(回调):它会在拒绝承诺对象时注册要执行的回调。

  • 始终(回调):它注册一个要执行的回调,无论是否解决或拒绝承诺对象。

  • 然后(SuccessCallback,FailureCallback):它立即注册成功和失败回调。

  • catch(failureCallback):它在拒绝承诺对象时注册要执行的回调。

在项目中包括jQuery:

有多种方法可以在您的项目中开始使用jQuery:

  • 使用Google hosted/microsoft-onstred 内容传递网络(CDN)包括JQuery版本。

  • 从官方jQuery网站下载自己的jQuery版本,并在服务器或本地文件系统上托管。

cdn

示例1

在此示例中,我们将使用jQuery看到延期对象的工作。

在您的html文件中写下以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>Deferred Object Example</title>
    <script src=
"https://code.jquery.com/jquery-3.6.0.min.js">
    </script>
</head>        

<body>
    <h1>This is an example of Deferred Object in jQuery</h1> 
    <h3>welcome to DEV</h3>
    <div id="result"></div>
    <script>
        function fetchData() {
            var deferred = $.Deferred();

            // Simulate an asynchronous operation 
            // that takes 3 seconds
            setTimeout(function() {
              var data = { id: 123, name: "John" };
              deferred.resolve(data);
            }, 3000);

            return deferred.promise();
        }

        $(document).ready(function() {
            // Call the fetchData function and 
            // register callbacks for success and failure
            fetchData().done(function(data) {
                $("#result").text("Data retrieved: " 
                                  + JSON.stringify(data));
            }).fail(function(error) {
                $("#result").text("Error: " + error);
            });
        });
    </script>
</body>
</html>

输出:

deferred

  1. javascript 代码从称为 fetchdata()的函数开始。此函数使用 $。递延()创建一个新的延期对象,并将其分配给延期 varible。
  2. fetchdata()函数中,有一个模拟的异步操作,由 settimeout 函数表示。它延迟执行3秒钟,然后用包含ID和名称的数据对象解析递延对象。
  3. $(document).ready()函数中, fetchdata()函数被调用。返回的承诺用于使用 .done() .fail() methods。

示例2

在此示例中,我们将使用jQuery看到 Promise 对象的工作。

在您的html文件中写下以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Promise Object Example</title>
</head>
<body>
    <h1>This is an example of Promise object in jQuery</h1> 
    <h3>welcome to DEV</h3>

    <div id="data"></div>

    <script>
        function fetchData() {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    const data = { id: 1, name: 'John Doe' };
                    // simulate a successful API call
                    resolve(data);
                    // simulate an error response from the API
                    // reject(new Error('Failed to fetch data'));
                }, 2000);
            });
        }

        fetchData().then((data) => {
            const dataDiv = document.getElementById('data');
            dataDiv.innerText = JSON.stringify(data);
         }).catch((error) => {
            console.error('Error:', error);
        });
    </script>
</body>
</html>

输出:

promise

  1. JavaScript代码定义函数 fetchdata()。在此功能中,使用Promise构造函数创建了一个新的Promise对象。
  2. Promise构造函数具有2个参数 - Resolve recove 。这些参数是用于指示异步操作的成功或失败的函数。
  3. fetchdata()函数之外,Promise对象用于使用。方法。

jqjs

递延对象的优点和缺点 -

优点:

  • 使用递延对象的使用使用户可以轻松地将异步操作组合在一起。

  • 递延对象提供了处理成功和失败异步操作的一致接口。

缺点:

  • 递延对象是jQuery独有的,因此不能在其他JavaScript框架中使用。

  • 使用延期对象可以在处理时间和内存使用方面向代码添加一些开销。

承诺对象的优势和缺点 -

优点:

  • 承诺很容易被束缚或组合在一起。这使得处理多个异步操作变得更加简单。

  • 承诺提供了一个更标准化的接口,用于处理异步操作与回调和递延对象相比。

缺点:

  • 承诺没有内置支持取消异步操作,这在某些情况下可能是有问题的。

  • 与其他方法相比

就是这样!您已经成功地了解了jQuery中的递延和承诺对象!

在LinkedIn上与我联系:-Linkedin

请查看我的GitHub,以了解惊人的项目:-Github

vy我的个人投资组合:-Aryan's Portfolio