我怎样才能写一个承诺,其中响应来自一个铁的ajax。
<iron-ajax id="listItems" method="GET" content-type="application/json" handle-as="json" last-response="{{items}}" on-error="handleErrorResponse"></iron-ajax>
this.data = {
get: function(sort, page, pageSize) {
return new Promise(function(resolve, reject) {
// Execute iron-ajax.
//...
// resolve(iron-ajax's response);
});
}
}
};
你正在寻找listItem.generateRequest()
,因为它返回了 iron-ajax 随附的 iron-request 对象,而该对象又提供了一个名为 request.completes
的承诺。
https://www.webcomponents.org/element/PolymerElements/iron-ajax/iron-ajax#method-generateRequest
https://www.webcomponents.org/element/PolymerElements/iron-ajax/iron-request#property-completes
我在下面修改了您的代码示例:
<iron-ajax id="listItems" method="GET" content-type="application/json" handle-as="json" last-response="{{items}}" on-error="handleErrorResponse"></iron-ajax>
this.data = {
get: function(sort, page, pageSize) {
return this.$.listItems.generateRequest().completes;
}
}
};
灵感来自 https://stackoverflow.com/a/37995462/2795627 更复杂的例子。向@akivajgordon致敬。