Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

knockout-promise-extender

skyh9MIT2.0.1

Knockout extender for handling promises.

knockout, Promise

readme

Knockout promise extender Build Status

Knockout extender for handling promises.

Installation

npm install knockout-promise-extender

Adding to knockout

var ko = require('knockout');
var promiseExtenderFactory = require('knockout-promise-extender');
ko.extenders.promise = promiseExtenderFactory(ko);

Usage

var x = ko.observable().extend({promise: true});

console.log(
    x, // observable
    x() // PromiseState
);

console.log(
    x().pending, // true
    x().resolved, // false
    x().rejected, // false
    x().value // undefined
);

x(Promise.resolve('some value'));

console.log(
    x().pending, // true, because Promise.resolve is async
    x().resolved, // false
    x().rejected, // false
    x().value // undefined
);

setTimeout(function () {
    console.log(
        x().pending, // false
        x().resolved, // true
        x().rejected, // false
        x().value // "some value"
    );
}, 0);

Usage in bindings

<div class="promised-model-view">
    <!-- ko if: x().pending -->
        <span class="wait-message">
            Loading data...
        </span>
    <!-- /ko -->

    <!-- ko if: x().resolved -->
        <span class="data" data-bind="text: x().value"></span>
    <!-- /ko -->

    <!-- ko if: x().rejected -->
        <span class="error-message">
            Something went wrong. Error is
            <span data-bind="text: x().value"></span>
        </span>
    <!-- /ko -->
</div>

changelog

Change Log

[2.0.1]

Fixed

  • Error in readme documentation

[2.0]

Added

  • Ability to work with multiple knockout instances in same context

Changed

  • External interface, so version is 2.0

[1.0.8]

Added

  • Package keywords

[1.0.7]

Added

  • Change log

Fixed

  • Readme

[1.0.6]

Added

  • License

Changed

  • Tests

Fixed

  • Bug with unmet gulp dependency
  • Removed unnecessary package files from NPM registry