Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/1.0.1/q.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
function task1() {
    return new Promise(function (resolve, reject) {
        var random = Math.random().toFixed(1)
        if (random > 0.5) {
            resolve(random)
        } else {
            reject(random)
        }
    })
}
function task2() {
    return new Promise(function (resolve, reject) {
        var random = Math.random().toFixed(1)
        if (random > 0.5) {
            resolve(random)
        } else {
            reject(random)
        }
    })
}
function task3() {
    return new Promise(function (resolve, reject) {
        var random = Math.random().toFixed(1)
        if (random > 0.5) {
            resolve(random)
        } else {
            reject(random)
        }
    })
}
function task4() {
    return new Promise(function (resolve, reject) {
        var random = Math.random().toFixed(1)
        if (random > 0.5) {
            resolve(random)
        } else {
            reject(random)
        }
    })
}
function task5() {
    return new Promise(function (resolve, reject) {
        var random = Math.random().toFixed(1)
        if (random > 0.5) {
            resolve(random)
        } else {
            reject(random)
        }
    })
}
function task6() {
    return new Promise(function (resolve, reject) {
        var random = Math.random().toFixed(1)
        if (random > 0.5) {
            resolve(random)
        } else {
            reject(random)
        }
    })
}
function task7() {
    return new Promise(function (resolve, reject) {
        var random = Math.random().toFixed(1)
        if (random > 0.5) {
            resolve(random)
        } else {
            reject(random)
        }
    })
}
Q.spawn(function * () {
    var ran = NaN
    try {
        ran = yield task1()
        document.write('task1 success, random:' + ran + '<br>')
        try {
            ran = yield task2()
            document.write('task2 success, random:' + ran + '<br>')
            if (ran > 0.7) {
                try {
                    ran = yield task4()
                    document.write('task4 success, random:' + ran + '<br>')
                } catch (e) {
                    document.write('task4 fail, random:' + ran + '<br>')
                }
            } else {
                try {
                    ran = yield task5()
                    document.write('task5 success, random:' + ran + '<br>')
                } catch (e) {
                    document.write('task5 fail, random:' + ran + '<br>')
                }
            }
        } catch (e) {
            document.write('task2 fail, random:' + ran + '<br>')
        }
    } catch (e) {
        document.write('task1 fail, random:' + ran + '<br>')
        try {
            ran = yield task3()
            document.write('task3 success, random:' + ran + '<br>')
        } catch (e) {
            document.write('task3 fail, random:' + ran + '<br>')
            if (ran < 0.3) {
                try {
                    ran = yield task7()
                    document.write('task7 success, random:' + ran + '<br>')
                } catch (e) {
                    document.write('task7 fail, random:' + ran + '<br>')
                }
            } else {
                try {
                    ran = yield task6()
                    document.write('task6 success, random:' + ran + '<br>')
                } catch (e) {
                    document.write('task6 fail, random:' + ran + '<br>')
                }
            }
        }
    }
})
Output

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

Dismiss x
public
Bin info
anonymouspro
0viewers