我正在使用Framework7开发混合应用程序(仅针对我自己),并且几乎所有功能都可以正常工作。我想整理一下代码并将一些重复的代码移到一个函数中。但是现在我得到了错误
ReferenceError:找不到变量:解析
我只是在学习JS,最近几天对范围和上下文有了更多的了解,但是我不知道为什么会出现此错误。据我了解,由于resolve()回调函数是在外部范围中定义的,因此我必须能够从自定义函数中调用它吗?
当我将app.request()放在getJson()函数所在的位置时,它可以工作。但是,该请求仍然可以在getJson()中运行,并且可以看到记录的数据,但是resolve函数无法按预期运行。
routes = [
{
path: '/person/abc/',
async: function (routeTo, routeFrom, resolve, reject) {
var router = this;
var app = router.app;
var jwt = store.get('jwt');
app.preloader.show();
getJson(
jwt,
{document:'person'},
'Test',
'-/-'
);
},
},
];
function getJson(jwt, data, title, note) {
app.request({
url: 'https://example.com/json/',
method: 'GET',
dataType: 'json',
crossDomain: true,
data: { data },
headers: { Authorization: 'Bearer ' + jwt },
success: function(data, textStatus){
if (data.status === 'ALLOW') {
console.log('Data received');
resolve(
{
componentUrl: './pages/person.html',
},
{
context: {
title: title, note: note, person: data.person,
}
}
);
} else {
app.dialog.alert('Error loading data');
}
app.preloader.hide();
return;
},
error: function(xhr, textStatus, errorThrown){
console.log('Error', xhr.response);
app.preloader.hide();
app.dialog.alert('Error on request');
return;
}
});
}