gpt4 book ai didi

ember.js - Ember RSVP Promise 解析总是返回未定义的值

转载 作者:行者123 更新时间:2023-12-05 00:58:01 24 4
gpt4 key购买 nike

我正在使用 Ember-simple-auth 并尝试将数据从我的自定义身份验证器返回到进行身份验证的 Controller 中。

在我的身份验证器/custom.js 中:

  authenticate(identification, password) {
return new Ember.RSVP.Promise(function (resolve, reject) {
var loginURL = 'https://domain.com/login';
var authObj = Ember.Object.create({"identity":identification,"password":password});
var hash = authObj.getProperties('identity', 'password');
var stringHash = JSON.stringify(hash);

var xhr = new XMLHttpRequest();
xhr.open("post", loginURL);
xhr.onreadystatechange = handler;
xhr.responseType = 'json';
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Format', 'JSON');
xhr.send(stringHash);

function handler() {
if (this.readyState === this.DONE) {
if (this.status === 200) {
console.log('response is: ',this.response); /// <-- returns good response data
resolve(this.response);
} else {
reject( 'failed with status: [' + this.status + ']');

}
}
}

在我的登录 Controller 中:
 authenticate() {
let { identification, password } = this.getProperties('identification', 'password');

var session = this.get('session');
session.authenticate('authenticator:custom', identification, password).then((reason) => {
console.log('failed login',reason);
});
}
},

但我真的很想能够处理 resolve函数并得到它的 value来自 authenticate 的有效负载 promise 。

如果我更改 .catch.then响应函数被成功调用,但总是有一个未定义的值作为其有效负载:
  session.authenticate('authenticator:custom', identification, password).then(
(response) => {
console.log('response: ',response); //// <---- always 'undefined'
this.setUserWithData(response);
},
(reason) => {
this.set('Login failed: ',reason);
}

);
}

即使我重组了 promise ,重新安排了函数的调用方式,RSVP 中的第一个函数也被成功调用,但有一个未定义的有效负载。 RSVP 的第二个函数始终具有正确的有效负载。

我尝试扭转解决/拒绝:
Ember.RSVP.Promise(function (resolve, reject){


Ember.RSVP.Promise(function (reject, resolve){

并且函数成功携带响应,但 simple-auth 现在认为它的授权失败。

我希望能够将响应有效负载传递到我的 Controller 中。或者,如果无法做到这一点,我如何将响应中的数据注入(inject)到我的 session 和 ember 数据存储中?从身份验证器的身份验证函数中调用并将数据插入存储似乎不是一个好习惯。

最佳答案

session 的authenticate方法不能用值解析。查看 API 文档:http://ember-simple-auth.com/api/classes/SessionService.html#method_authenticate

关于ember.js - Ember RSVP Promise 解析总是返回未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com