从 ironRequest 承诺中检索状态代码
Retrieving status code from ironRequest promise
当使用 iron-ajax
元素发送 ajax 请求时,我使用返回的承诺而不是指定 on-response
和 on-error
方法,因为它感觉更简单。
但是,当请求失败时,catch 处理程序只包含一个错误对象,消息如 "The request failed with status code: 403".
我想根据状态码以不同的方式处理错误,但解析错误信息似乎很尴尬。有没有其他方法可以这样做,或者这是要走的路吗?
var p = elem.generateRequest().completes
p.catch (err) ->
# How to retrieve http status code?
# do smth
return p
<iron-ajax>.generateRequest()
returns the corresponding <iron-request>
, and you could get the status code from <iron-request>.status
:
var req = this.$.ajax.generateRequest();
var p = req.completes;
p.catch(err => {
console.log('err', err);
console.log('statusText', req.statusText);
console.log('status', req.status);
});
HTMLImports.whenReady(function() {
Polymer({
is: 'x-foo',
ready: function() {
var req = this.$.ajax.generateRequest();
var p = req.completes;
p.then(_ => console.log('done'))
.catch(err => {
console.log('err', err);
console.log('statusText', req.statusText);
console.log('status', req.status);
});
}
});
});
<head>
<base href="https://polygit.org/polymer+1.5.0/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="polymer/polymer.html">
<link rel="import" href="iron-ajax/iron-ajax.html">
</head>
<body>
<x-foo></x-foo>
<dom-module id="x-foo">
<template>
<iron-ajax id="ajax" url="http://jsonplaceholder.typicode.com/postsx"></iron-ajax>
</template>
</dom-module>
</body>
当使用 iron-ajax
元素发送 ajax 请求时,我使用返回的承诺而不是指定 on-response
和 on-error
方法,因为它感觉更简单。
但是,当请求失败时,catch 处理程序只包含一个错误对象,消息如 "The request failed with status code: 403".
我想根据状态码以不同的方式处理错误,但解析错误信息似乎很尴尬。有没有其他方法可以这样做,或者这是要走的路吗?
var p = elem.generateRequest().completes
p.catch (err) ->
# How to retrieve http status code?
# do smth
return p
<iron-ajax>.generateRequest()
returns the corresponding <iron-request>
, and you could get the status code from <iron-request>.status
:
var req = this.$.ajax.generateRequest();
var p = req.completes;
p.catch(err => {
console.log('err', err);
console.log('statusText', req.statusText);
console.log('status', req.status);
});
HTMLImports.whenReady(function() {
Polymer({
is: 'x-foo',
ready: function() {
var req = this.$.ajax.generateRequest();
var p = req.completes;
p.then(_ => console.log('done'))
.catch(err => {
console.log('err', err);
console.log('statusText', req.statusText);
console.log('status', req.status);
});
}
});
});
<head>
<base href="https://polygit.org/polymer+1.5.0/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="polymer/polymer.html">
<link rel="import" href="iron-ajax/iron-ajax.html">
</head>
<body>
<x-foo></x-foo>
<dom-module id="x-foo">
<template>
<iron-ajax id="ajax" url="http://jsonplaceholder.typicode.com/postsx"></iron-ajax>
</template>
</dom-module>
</body>