home
  • Blog
  • Home
  • Projects
    • Ember
    • EmberData
    • Ember CLI
2.18
  • Packages
    • @ember/application
    • @ember/array
    • @ember/component
    • @ember/controller
    • @ember/debug
    • @ember/engine
    • @ember/error
    • @ember/object
    • @ember/polyfills
    • @ember/routing
    • @ember/runloop
    • @ember/service
    • @ember/string
    • @ember/test
    • @ember/utils
    • ember-glimmer
    • jquery
  • Classes
    • Adapter
    • Application
    • ApplicationInstance
    • ApplicationInstance.BootOptions
    • ArrayProxy
    • Checkbox
    • Component
    • ComputedProperty
    • ContainerDebugAdapter
    • ContainerProxyMixin
    • Controller
    • CoreObject
    • DataAdapter
    • Ember.Debug
    • Ember.Logger
    • Ember.MutableEnumerable
    • Ember.Namespace
    • Ember.NativeArray
    • Ember.Templates.helpers
    • Ember.Test
    • Ember.Test.QUnitAdapter
    • EmberArray
    • EmberError
    • EmberObject
    • Engine
    • EngineInstance
    • Evented
    • GlobalsResolver
    • HashLocation
    • Helper
    • HistoryLocation
    • LinkComponent
    • Mixin
    • MutableArray
    • NoneLocation
    • ObjectProxy
    • Observable
    • PromiseProxyMixin
    • RSVP.EventTarget
    • RSVP.Promise
    • Route
    • Router
    • RouterService
    • Service
    • String
    • TextArea
    • TextField

Class PromiseProxyMixin public


Defined in: packages/ember-runtime/lib/mixins/promise_proxy.js:39
Module: @ember/object
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';

A low level mixin making ObjectProxy promise-aware.

let ObjectPromiseProxy = Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);

let proxy = ObjectPromiseProxy.create({
  promise: Ember.RSVP.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'


Methods

catch (callback) : RSVP.Promise public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:182

Available since v1.3.0

callback
Function
returns
RSVP.Promise

An alias to the proxied promise's catch.

See RSVP.Promise.catch.

finally (callback) : RSVP.Promise public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:195

Available since v1.3.0

callback
Function
returns
RSVP.Promise

An alias to the proxied promise's finally.

See RSVP.Promise.finally.

then (callback) : RSVP.Promise public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:170

callback
Function
returns
RSVP.Promise

An alias to the proxied promise's then.

See RSVP.Promise.then.

Properties

isFulfilled public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:135

Will become true if the proxied promise is fulfilled.

isPending public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:108

Once the proxied promise has settled this will become false.

isRejected public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:126

Will become true if the proxied promise is rejected.

isSettled public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:117

Once the proxied promise has settled this will become true.

promise public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:144

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:

Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({
  promise: <thenable>
});

reason public

Module: @ember/object

Defined in packages/ember-runtime/lib/mixins/promise_proxy.js:98

If the proxied promise is rejected this will contain the reason provided.

On this page


Methods

  • catch
  • finally
  • then

Properties

  • isFulfilled
  • isPending
  • isRejected
  • isSettled
  • promise
  • reason
Team Sponsors Security Legal Branding Community Guidelines
Twitter GitHub Discord Mastodon

If you want help you can contact us by email, open an issue, or get realtime help by joining the Ember Discord.

© Copyright 2025 - Tilde Inc.
Ember.js is free, open source and always will be.


Ember is generously supported by
blue Created with Sketch.