Skip to content

TypeError: Chaining cycle detected for promise! #1

Description

@taoeer

测试代码

const Promise = require('./promise');

function go() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve();
    }, 1000);
  });
}

function r() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject();
    }, 2000);
  });
}

Promise.all([go(),r()]).then(v => {
  console.log('resolve', v);
}).catch(v => {
  console.log('reject', v);
});

原因可能是

/**
 * 将现有对象转为成功的Promise对象
 */
Promise.resolve = function (value) {
  let promise;
  return (promise = new Promise((resolve, reject) => {
    resolvePromise(promise, value, resolve, reject); // 参数promise永远是undefined
  }));
};

改为

Promise.resolve = function (value) {
  if (value instanceof Promise) {
    return value;
  }
  return new Promise(resolve => resolve(value));
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions