Hàm Promise Trong JavaScript | Promise Functions

Trong JavaScript, Promise là một cơ chế để xử lý các hoạt động bất đồng bộ. Đây là một số hàm Promise phổ biến và mẫu cách chúng ta có thể sử dụng chúng:
  1. Promise.resolve(value)
    • Trả về một Promise được giải quyết với giá trị được chỉ định.
    const resolvedPromise = Promise.resolve("Resolved Value");
    resolvedPromise.then(result => console.log(result));
    
  2. Promise.reject(reason)
    • Trả về một Promise bị từ chối với lý do được chỉ định.
    const rejectedPromise = Promise.reject("Error Message");
    rejectedPromise.catch(error => console.error(error));
    
  3. Promise.all(iterable)
    • Trả về một Promise chờ tất cả các Promise trong mảng iterable được giải quyết và trả về một mảng các giá trị giải quyết.
    const promise1 = Promise.resolve("Value 1");
    const promise2 = Promise.resolve("Value 2");
    
    Promise.all([promise1, promise2])
      .then(results => console.log(results));
    
  4. Promise.race(iterable)
    • Trả về Promise giải quyết hoặc từ chối với giá trị của Promise đầu tiên trong mảng iterable.
    const promise1 = new Promise(resolve => setTimeout(resolve, 1000, "Value 1"));
    const promise2 = new Promise(resolve => setTimeout(resolve, 500, "Value 2"));
    
    Promise.race([promise1, promise2])
      .then(result => console.log(result)); // "Value 2"
    
  5. Promise.then(onFulfilled, onRejected)
    • Thêm các hàm xử lý khi Promise được giải quyết hoặc từ chối.
    const examplePromise = new Promise((resolve, reject) => {
      // Thực hiện công việc bất đồng bộ
      const success = true;
      if (success) {
        resolve("Operation successful");
      } else {
        reject("Operation failed");
      }
    });
    
    examplePromise
      .then(result => console.log(result))
      .catch(error => console.error(error));
    
  6. Promise.catch(onRejected)
    • Thêm một hàm xử lý cho trường hợp Promise bị từ chối.
    const rejectedPromise = Promise.reject("Error Message");
    rejectedPromise.catch(error => console.error(error));
  7. Promise.finally(onFinally)
    • Thêm một hàm xử lý được gọi khi Promise được giải quyết hoặc từ chối. Hàm này sẽ được gọi dù Promise được giải quyết hay từ chối.
    const examplePromise = new Promise((resolve, reject) => {
      const success = true;
      if (success) {
        resolve("Operation successful");
      } else {
        reject("Operation failed");
      }
    });
    
    examplePromise
      .then(result => console.log(result))
      .catch(error => console.error(error))
      .finally(() => console.log("Finally block executed"));
    
  8. Promise.allSettled(iterable)
    • Trả về một Promise chờ tất cả các Promise trong mảng iterable được giải quyết hoặc từ chối. Kết quả là một mảng đối tượng mô tả kết quả của mỗi Promise.
    const promise1 = Promise.resolve("Value 1");
    const promise2 = Promise.reject("Error 2");
    
    Promise.allSettled([promise1, promise2])
      .then(results => console.log(results));
    
  9. Promise.any(iterable)
    • Trả về Promise giải quyết với giá trị của Promise đầu tiên trong mảng iterable mà không bị từ chối. Nếu tất cả các Promise đều bị từ chối, nó sẽ trả về một Promise bị từ chối với mảng các lý do từ chối.
    const promise1 = Promise.reject("Error 1");
    const promise2 = Promise.resolve("Value 2");
    
    Promise.any([promise1, promise2])
      .then(result => console.log(result)); // "Value 2"
    
  10. Promise.timeout(ms, promise)
    • Tạo một Promise mới, được giải quyết với giá trị của Promise đã cho nếu nó giải quyết trong khoảng thời gian được xác định. Nếu không, nó sẽ bị từ chối với một lỗi timeout.
    function timeout(ms, promise) {
      return new Promise((resolve, reject) => {
        const timeoutId = setTimeout(() => {
          clearTimeout(timeoutId);
          reject(new Error("Promise Timeout"));
        }, ms);
        promise.then(value => {
          clearTimeout(timeoutId);
          resolve(value);
        }).catch(error => {
          clearTimeout(timeoutId);
          reject(error);
        });
      });
    }
    
    const promiseWithTimeout = timeout(1000, someAsyncFunction());
    promiseWithTimeout.then(result => console.log(result)).catch(error => console.error(error))
  11. Promise.raceSettled(iterable)
    • Kết hợp ý tưởng từ cả Promise.racePromise.allSettled. Nó trả về Promise giải quyết hoặc từ chối với kết quả của Promise nhanh nhất trong mảng iterable.
    const promise1 = new Promise(resolve => setTimeout(resolve, 1000, "Value 1"));
    const promise2 = new Promise(reject => setTimeout(reject, 500, "Error 2"));
    
    Promise.raceSettled([promise1, promise2])
      .then(result => console.log(result))
      .catch(error => console.error(error)); // "Error 2"
  12. Promise.resolveAll(iterable)
    • Giống như Promise.all, nhưng thay vì dừng khi có một Promise bị từ chối, nó tiếp tục chờ tất cả các Promise trong mảng iterable được giải quyết hoặc từ chối.
    const promise1 = Promise.resolve("Value 1");
    const promise2 = Promise.reject("Error 2");
    
    Promise.resolveAll([promise1, promise2])
      .then(results => console.log(results))
      .catch(errors => console.error(errors)); // ["Value 1", "Error 2"]

Nhận xét

Mới hơn Cũ hơn