d3:4.8.0
我在后端强制执行HTTP 401响应来测试授权例程。
import first
while (first.rocket<10):
print 'rocket less than 10'
print 'done'
未被调用。
d3文档让我认为应该:https://github.com/d3/d3-request/blob/master/README.md#request_send
示例JS:
d3.request().on('error', function(e){...})
预期的控制台日志:
var postData = whatever;
d3.request(someURL)
.on('error', function(e) {
console.log('In on(error): ', e);
})
.header("Content-Type","application/x-www-form-urlencoded")
.send('POST', postData, function(error,response) {
if (error) {
console.log('Error in send() callback: ', error);
return;
}
console.log('okay');
});
收到控制台日志:
POST https://someURL/ 401 (Unauthorized)
XHR finished loading: POST "https://someURL/"
In on(error): ProgressEvent {isTrusted: true ... }
未触发on('error')回调。我已经尝试更改链中的on()调用位置,这应该没关系,并且没有。
答案 0 :(得分:0)
在这个问题中,带有两个参数的send()阻止了on()的触发。下面是一个示例,它响应401结果调用on(错误),并成功调用send回调:
d3.request(someURL)
.header("Content-Type","application/x-www-form-urlencoded")
.send('POST', postData, function(response) {
console.log('in send() callback with response ', response)
})
.on('error', function(e) {
console.log('on() error: ', e);
})
;