exports.addAccount = async function(username, password){
var request = require('request');
var data = '{"login": "' + username + '","password":"' + password + '" }';
var json_obj = JSON.parse(data);
error = request.post({
headers: {'content-type': 'application/json'},
url: 'https://example.su/engine/auth.php',
form: json_obj
}, async function* (error, response, body){
try {
response = JSON.parse(body);
if(response.error){
return 'error' + response.error;
}else{
try {
if(response.id){
const ret = ConfigManager.addAuthAccount(response.id, response.hash,
response.email, response.username)
if(ConfigManager.getClientToken() == null){
ConfigManager.setClientToken(response.hash);
}
ConfigManager.save();
return ret;
}
} catch (e) {
return "error";
}
}
} catch (e) {
return "error";
}
});
if(error.includes('error')){
//*****************
}
}
如何重定向嵌套函数的返回值? 或如何将响应主体写入变量“错误”? 如何实现呢?重做程序中的授权机制?
答案 0 :(得分:1)
首先,除非您在函数内部使用了await,否则不需要使用异步。其次,要解决此问题,您需要返回一个承诺并相应地解决(返回结果值)或撤销(返回错误)。
create table t1 (
f_sta_date number,
f_sta_time number,
f_sto_date number,
f_sto_time number
);
insert into t1 values (20191001, 6689, 20191001, 7185);
commit;
with
prep (f_sta_date, f_sta_time, f_sto_date, f_sto_time, dt_sta, dt_sto) as (
select f_sta_date, f_sta_time, f_sto_date, f_sto_time,
from_tz(to_timestamp(to_char(f_sta_date), 'yyyymmdd')
+ numtodsinterval(f_sta_time, 'second'), 'CET'),
from_tz(to_timestamp(to_char(f_sto_date), 'yyyymmdd')
+ numtodsinterval(f_sto_time, 'second'), 'CET')
from t1
)
select f_sta_date, f_sta_time, f_sto_date, f_sto_time, dt_sta, dt_sto,
dt_sta at time zone 'UTC' as dt_sta_utc,
dt_sto at time zone 'UTC' as dt_sto_utc
from prep
;
F_STA_DATE F_STA_TIME F_STO_DATE F_STO_TIME DT_STA DT_STO DT_STA_UTC DT_STO_UTC
---------- ---------- ---------- ---------- ----------------------- ----------------------- ----------------------- -----------------------
20191001 6689 20191001 7185 2019-10-01 01:51:29 CET 2019-10-01 01:59:45 CET 2019-09-30 23:51:29 UTC 2019-09-30 23:59:45 UTC
您可以找到有关承诺here的更多信息。