From 01b0e12ba27b5069248fd09235e9a7143915ee30 Mon Sep 17 00:00:00 2001 From: Irvin Date: Wed, 16 Feb 2022 02:02:49 +0800 Subject: remove `notranslate` class in zh-CN --- .../global_objects/promise/all/index.html | 14 ++++++------- .../global_objects/promise/allsettled/index.html | 2 +- .../global_objects/promise/any/index.html | 8 ++++---- .../reference/global_objects/promise/index.html | 24 +++++++++++----------- .../global_objects/promise/race/index.html | 6 +++--- 5 files changed, 27 insertions(+), 27 deletions(-) (limited to 'files/zh-cn/web/javascript/reference/global_objects/promise') diff --git a/files/zh-cn/web/javascript/reference/global_objects/promise/all/index.html b/files/zh-cn/web/javascript/reference/global_objects/promise/all/index.html index c2d22ae1cd..113760c25d 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/promise/all/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/promise/all/index.html @@ -21,7 +21,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all

语法

-
Promise.all(iterable);
+
Promise.all(iterable);

参数

@@ -56,7 +56,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all

Promise.all 等待所有都完成(或第一个失败)。

-
var p1 = Promise.resolve(3);
+
var p1 = Promise.resolve(3);
 var p2 = 1337;
 var p3 = new Promise((resolve, reject) => {
   setTimeout(resolve, 100, 'foo');
@@ -68,7 +68,7 @@ Promise.all([p1, p2, p3]).then(values => {
 
 

如果参数中包含非 promise 值,这些值将被忽略,但仍然会被放在返回数组中(如果 promise 完成的话):

-
// this will be counted as if the iterable passed is empty, so it gets fulfilled
+
// this will be counted as if the iterable passed is empty, so it gets fulfilled
 var p = Promise.all([1,2,3]);
 // this will be counted as if the iterable passed contains only the resolved promise with value "444", so it gets fulfilled
 var p2 = Promise.all([1,2,3, Promise.resolve(444)]);
@@ -91,7 +91,7 @@ setTimeout(function(){
 
 

下面的例子中演示了 Promise.all 的异步性(如果传入的可迭代对象是空的,就是同步):

-
// we are passing as argument an array of promises that are already resolved,
+
// we are passing as argument an array of promises that are already resolved,
 // to trigger Promise.all as soon as possible
 var resolvedPromisesArray = [Promise.resolve(33), Promise.resolve(44)];
 
@@ -113,7 +113,7 @@ setTimeout(function(){
 
 

如果 Promise.all 失败,也是一样的:

-
var mixedPromisesArray = [Promise.resolve(33), Promise.reject(44)];
+
var mixedPromisesArray = [Promise.resolve(33), Promise.reject(44)];
 var p = Promise.all(mixedPromisesArray);
 console.log(p);
 setTimeout(function(){
@@ -129,7 +129,7 @@ setTimeout(function(){
 
 

但是,Promise.all 当且仅当传入的可迭代对象为空时为同步:

-
var p = Promise.all([]); // will be immediately resolved
+
var p = Promise.all([]); // will be immediately resolved
 var p2 = Promise.all([1337, "hi"]); // non-promise values will be ignored, but the evaluation will be done asynchronously
 console.log(p);
 console.log(p2)
@@ -149,7 +149,7 @@ setTimeout(function(){
 
 

Promise.all 在任意一个传入的 promise 失败时返回失败。例如,如果你传入的 promise中,有四个 promise 在一定的时间之后调用成功函数,有一个立即调用失败函数,那么 Promise.all 将立即变为失败。

-
var p1 = new Promise((resolve, reject) => {
+
var p1 = new Promise((resolve, reject) => {
   setTimeout(resolve, 1000, 'one');
 });
 var p2 = new Promise((resolve, reject) => {
diff --git a/files/zh-cn/web/javascript/reference/global_objects/promise/allsettled/index.html b/files/zh-cn/web/javascript/reference/global_objects/promise/allsettled/index.html
index a448dfb79b..d6ceaaa2ad 100644
--- a/files/zh-cn/web/javascript/reference/global_objects/promise/allsettled/index.html
+++ b/files/zh-cn/web/javascript/reference/global_objects/promise/allsettled/index.html
@@ -19,7 +19,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/allSettled
 
 

句法

-
Promise.allSettled(iterable);
+
Promise.allSettled(iterable);

参数

diff --git a/files/zh-cn/web/javascript/reference/global_objects/promise/any/index.html b/files/zh-cn/web/javascript/reference/global_objects/promise/any/index.html index 25e87a91af..b61b833f5f 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/promise/any/index.html +++ b/files/zh-cn/web/javascript/reference/global_objects/promise/any/index.html @@ -19,7 +19,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/any

语法

-
Promise.any(iterable);
+
Promise.any(iterable);

参数

@@ -63,7 +63,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise/any

即使第一个返回的 promise 是失败的,Promise.any() 依然使用第一个成功状态的 promise 来返回。这与使用首个(无论 rejected 还是 fullfiled)promise 来返回的 {{jsxref("Promise.race()")}} 相反。

-
const pErr = new Promise((resolve, reject) => {
+
const pErr = new Promise((resolve, reject) => {
   reject("总是失败");
 });
 
@@ -86,7 +86,7 @@ Promise.any([pErr, pSlow, pFast]).then((value) => {
 
 

如果没有 fulfilled (成功的) promise,Promise.any() 返回 {{jsxref("AggregateError")}} 错误。

-
const pErr = new Promise((resolve, reject) => {
+
const pErr = new Promise((resolve, reject) => {
   reject('总是失败');
 });
 
@@ -100,7 +100,7 @@ Promise.any([pErr]).catch((err) => {
 
 

在这个例子,我们有一个获取图片并返回 blob 的函数,我们使用 Promise.any() 来获取一些图片并显示第一张有效的图片(即最先 resolved 的那个 promise)。

-
function fetchAndDecode(url) {
+
function fetchAndDecode(url) {
   return fetch(url).then(response => {
     if(!response.ok) {
       throw new Error(`HTTP error! status: ${response.status}`);
diff --git a/files/zh-cn/web/javascript/reference/global_objects/promise/index.html b/files/zh-cn/web/javascript/reference/global_objects/promise/index.html
index 3dd832b401..31420f60c5 100644
--- a/files/zh-cn/web/javascript/reference/global_objects/promise/index.html
+++ b/files/zh-cn/web/javascript/reference/global_objects/promise/index.html
@@ -46,7 +46,7 @@ translation_of: Web/JavaScript/Reference/Global_Objects/Promise
 
 

我们可以用 promise.then()promise.catch()promise.finally() 这些方法将进一步的操作与一个变为已敲定状态的 promise 关联起来。这些方法还会返回一个新生成的 promise 对象,这个对象可以被非强制性的用来做链式调用,就像这样:

-
const myPromise =
+
const myPromise =
   (new Promise(myExecutorFunc))
   .then(handleFulfilledA,handleRejectedA)
   .then(handleFulfilledB,handleRejectedB)
@@ -65,7 +65,7 @@ const myPromise =
 
 

这两个函数的签名很简单,它们只接受一个任意类型的参数。这些函数由您(编程者)编写。这些函数的终止状态决定着链式调用中下一个promise的"已敲定 (settled)"状态是什么。任何不是 throw 的终止都会创建一个"已决议(resolved)"状态,而以 throw 终止则会创建一个"已拒绝"状态。

-
handleFulfilled(value)       { /*...*/; return nextValue;  }
+
handleFulfilled(value)       { /*...*/; return nextValue;  }
 handleRejection(reason)  { /*...*/; throw  nextReason; }
 handleRejection(reason)  { /*...*/; return nextValue;  }
@@ -75,21 +75,21 @@ handleRejection(reason) { /*...*/; return nextValue; }

链式调用中的 promise 们就像俄罗斯套娃一样,是嵌套起来的,但又像是一个栈,每个都必须从顶端被弹出。链式调用中的第一个 promise 是嵌套最深的一个,也将是第一个被弹出的。

-
(promise D, (promise C, (promise B, (promise A) ) ) )
+
(promise D, (promise C, (promise B, (promise A) ) ) )

当存在一个 nextValue 是 promise 时,就会出现一种动态的替换效果。return 会导致一个 promise 被弹出,但这个 nextValue promise 则会被推入被弹出 promise 原来的位置。对于上面所示的嵌套场景,假设与 "promise B" 相关的 .then() 返回了一个值为 "promise X" 的 nextValue 。那么嵌套的结果看起来就会是这样:

-
(promise D, (promise C, (promise X) ) )
+
(promise D, (promise C, (promise X) ) )

一个 promise 可能会参与不止一次的嵌套。对于下面的代码,promiseA 向"已敲定"("settled")状态的过渡会导致两个实例的 .then 都被调用。

-
const promiseA = new Promise(myExecutorFunc);
+
const promiseA = new Promise(myExecutorFunc);
 const promiseB = promiseA.then(handleFulfilled1, handleRejected1);
 const promiseC = promiseA.then(handleFulfilled2, handleRejected2); 

一个已经处于"已敲定"("settled")状态的 promise 也可以接收操作。在那种情况下,(如果没有问题的话,)这个操作会被作为第一个异步操作被执行。注意,所有的 promise 都一定是异步的。因此,一个已经处于"已敲定"("settled")状态的 promise 中的操作只有 promise 链式调用的栈被清空了和一个事件循环过去了之后才会被执行。这种效果跟 setTimeout(action, 10) 特别相似。

-
const promiseA = new Promise( (resolutionFunc,rejectionFunc) => {
+
const promiseA = new Promise( (resolutionFunc,rejectionFunc) => {
     resolutionFunc(777);
 });
 // 这时,"promiseA" 已经被敲定了。
@@ -155,7 +155,7 @@ console.log("immediate logging");
 
 

Promise 对象是由关键字 new 及其构造函数来创建的。该构造函数会把一个叫做“处理器函数”(executor function)的函数作为它的参数。这个“处理器函数”接受两个函数——resolve 和 reject ——作为其参数。当异步任务顺利完成且返回结果值时,会调用 resolve 函数;而当异步任务失败且返回失败原因(通常是一个错误对象)时,会调用reject 函数。

-
const myFirstPromise = new Promise((resolve, reject) => {
+
const myFirstPromise = new Promise((resolve, reject) => {
   // ?做一些异步操作,最终会调用下面两者之一:
   //
   //   resolve(someValue); // fulfilled
@@ -165,7 +165,7 @@ console.log("immediate logging");
 
 

想要某个函数拥有promise功能,只需让其返回一个promise即可。

-
function myAsyncFunction(url) {
+
function myAsyncFunction(url) {
   return new Promise((resolve, reject) => {
     const xhr = new XMLHttpRequest();
     xhr.open("GET", url);
@@ -179,7 +179,7 @@ console.log("immediate logging");
 
 

基础示例

-
let myFirstPromise = new Promise(function(resolve, reject){
+
let myFirstPromise = new Promise(function(resolve, reject){
     //当异步代码执行成功时,我们才会调用resolve(...), 当异步代码失败时就会调用reject(...)
     //在本例中,我们使用setTimeout(...)来模拟异步代码,实际编码时可能是XHR请求或是HTML5的一些API方法.
     setTimeout(function(){
@@ -196,7 +196,7 @@ myFirstPromise.then(function(successMessage){
 
 

高级示例

-