JSFiddle - React, Tailwind, and code Playground

by DazWilkin

HTML

<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.1.0.js"></script>
<p>Successes</p>
<ol data-bind="foreach:success">
    <li data-bind="text:$data"></li>
</ol>
<br/>
<p>Failures</p>
<ol data-bind="foreach:failure">
    <li data-bind="text:$data"></li>
</ol>

CSS

html {
    font-family:"Arial";
}

JavaScript

/*globals $,jQuery,console,ko*/
$(function() {

    "use strict";

    var data, async, viewModel;

    data = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"];

    async= function(letter) {
        var $def = $.Deferred();
        if (Math.random() < 0.7) {
            // p=0.7 that it will resolve
            setTimeout(function() {
                $def.resolve(letter);
            }, 5000 * Math.random());
        } else {
            // p=0.3 that it will reject
            $def.reject(letter);
        }
        return $def.promise();
    };

    viewModel = {
        success: ko.observableArray([]),
        failure: ko.observableArray([])
    };
    ko.applyBindings(viewModel);

    $.when.apply($, data.map(function(letter) {
        async(letter).done(function(letter) {
            viewModel.success.push(letter);
        }).fail(function(letter) {
            viewModel.failure.push(letter);
        });
    })).always(function() {
        console.log("success");
    });
});