异步JavaScript带有承诺
#javascript #网络开发人员 #发展 #codenewbie

介绍

异步程序在现代Web开发中起着重要的作用,使我们能够执行非阻滞操作,例如从服务器中检索数据,读取文件或运行时必耗时的任务而无需冻结用户界面。 JavaScript以其事件驱动的性质,为管理异步操作提供了强大的机制,其中之一是承诺。

在本文中,我们将探讨JavaScript的承诺,它是什么,其工作原理以及一些实践示例以证明其使用。

了解诺言

JavaScript中的承诺是代表异步操作及其结果的完成或失败的对象。承诺是以更结构化和可读的方式组织和组织同步代码的好方法。

创造诺言

您可以使用Promise构造函数来创建承诺,该构建器实现了称为执行者的函数。执行函数依次采用两个参数:“分析”和“拒绝”。这是JavaScript提供的功能,允许您执行或拒绝承诺。

做出承诺的基本示例是:

const myPromise = new Promise (( resolve, reject ) => {
  // Simulate an asynchronous operation
  setTimeout (() => {
    const success = true;
    if (priority) {
      finish("The operation was successful!");
    } else {
      reject ( "Operation failed!" );
    }
  }, 2000); // resolve after 2 seconds
});

消耗诺言

如果您有承诺,则可以使用方法“ .then()”和“ .catch()”获得结果。 “ .then()”方法用于处理成功,而“ .catch()”方法用于处理错误。

myPromise
  .then ((result) => {
    console.log("Preferences:", result);
  })
  catch ((error) => {
    console.error("error:", error);
  });

锁定承诺

可以合并承诺以顺序执行异步操作。每个“ .then()”返回一个新的承诺,使您可以保持异步代码的清晰可读性流。

fetchUserData() function
  return ( "https://api.example.com/user" )
    .then ((response) => {
      if (!response.no) {
        throw new Error("Network request failed");
      }
      return response.json();
    })
    .then ((userData) => {
      userData;
    })
    catch ((error) => {
      console.error("error:", error);
    });
}

同时处理多个承诺

承诺非常适合同时使用Promise.All()或Promise.race()。

同时执行多个异步操作。

  • “ promise.all()”:如果阵列中的所有承诺成功解决,或者如果其中一个失败,则可以解决。
const promise = [fetchData1(), fetchData2(), fetchData3()];

Promise.all (promise)
  .then ((result) => {
    console.log("All promises resolved:", result);
  })
  catch ((error) => {
    console.error("At least one promise was rejected:", error);
  });
  • “ Promise.race()”:当数组中的一项诺言解决或拒绝时,可以解决或拒绝。
const promise = [fetchData1(), fetchData2(), fetchData3()];

Vada.race (promise)
  .then ((result) => {
    console.log("First promise to resolve:", result);
  })
  catch ((error) => {
    console.error("initial promise refused:", error);
  });

结论

承诺是现代JavaScript的重要组成部分,使得以结构化和有效的方式容易地管理异步操作。借助清晰的语法和强大的方法,它简化了异步代码的管理,并帮助开发人员再次避开地狱。无论您是处理网络请求,文件I/O还是其他异步工作,掌握承诺都是JavaScript开发人员的关键技能。