Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
Promise.myAll = function(list) {
    const results = []
    let count = 0
    return new Promise((resolve, reject) => {
        list.map((item, index) => {
            // 把数据都处理成Promise
            Promise.resolve(item).then(
                res => {
                    results[index] = res
                    count += 1
                    if (count == list.length) {
                        resolve(results)
                    }
                },
                err => {
                    reject(err)
                }
            )
        })
    })
}
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});
const promise4 = new Promise((resolve, reject) => {
  setTimeout(reject, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values, 'Promise.all');
});
Promise.myAll([promise1, promise2, promise3]).then((values) => {
  console.log(values, 'Promise.myAll');
});
Promise.myAll([promise1, promise2, promise3, promise4]).then((values) => {
  console.log(values, 'Promise.myAll');
}, err => {
  console.log(err, 'Promise.myAll失败');
});
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers