Class PromiseProxyMixin
publicimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
A low level mixin making ObjectProxy promise-aware.
import { resolve } from 'rsvp';
import $ from 'jquery';
import ObjectProxy from '@ember/object/proxy';
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
let ObjectPromiseProxy = ObjectProxy.extend(PromiseProxyMixin);
let proxy = ObjectPromiseProxy.create({
promise: resolve($.getJSON('/some/remote/data.json'))
});
proxy.then(function(json){
// the json
}, function(reason) {
// the reason why you have no json
});
the proxy has bindable attributes which track the promises life cycle
proxy.get('isPending') //=> true
proxy.get('isSettled') //=> false
proxy.get('isRejected') //=> false
proxy.get('isFulfilled') //=> false
When the $.getJSON completes, and the promise is fulfilled
with json, the life cycle attributes will update accordingly.
Note that $.getJSON doesn't return an ECMA specified promise,
it is useful to wrap this with an RSVP.resolve
so that it behaves
as a spec compliant promise.
proxy.get('isPending') //=> false
proxy.get('isSettled') //=> true
proxy.get('isRejected') //=> false
proxy.get('isFulfilled') //=> true
As the proxy is an ObjectProxy, and the json now its content, all the json properties will be available directly from the proxy.
// Assuming the following json:
{
firstName: 'Stefan',
lastName: 'Penner'
}
// both properties will accessible on the proxy
proxy.get('firstName') //=> 'Stefan'
proxy.get('lastName') //=> 'Penner'
isFulfilled public
Defined in packages/@ember/object/promise-proxy-mixin.ts:167
Will become true
if the proxied promise is fulfilled.
isPending public
Defined in packages/@ember/object/promise-proxy-mixin.ts:136
Once the proxied promise has settled this will become false
.
isRejected public
Defined in packages/@ember/object/promise-proxy-mixin.ts:158
Will become true
if the proxied promise is rejected.
isSettled public
Defined in packages/@ember/object/promise-proxy-mixin.ts:147
Once the proxied promise has settled this will become true
.
promise public
Defined in packages/@ember/object/promise-proxy-mixin.ts:176
The promise whose fulfillment value is being proxied by this object.
This property must be specified upon creation, and should not be changed once created.
Example:
import ObjectProxy from '@ember/object/proxy';
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
ObjectProxy.extend(PromiseProxyMixin).create({
promise: <thenable>
});
reason public
Defined in packages/@ember/object/promise-proxy-mixin.ts:126
If the proxied promise is rejected this will contain the reason provided.