Javascript 角度4奇怪错误:查询不';t在-不-显示消息时结束
这是我整个编程生涯中最奇怪的错误。我一直在努力解决这个问题,但我找不到这段代码中发生了什么。这似乎毫无意义 我正在使用以下工具:Javascript 角度4奇怪错误:查询不';t在-不-显示消息时结束,javascript,angular,typescript,ionic-framework,Javascript,Angular,Typescript,Ionic Framework,这是我整个编程生涯中最奇怪的错误。我一直在努力解决这个问题,但我找不到这段代码中发生了什么。这似乎毫无意义 我正在使用以下工具: 离子3 角度4 打字脚本/ES6 我正在尝试一个方法“assignChat(user)”,它将聊天分配给一个用户。它必须使用几个API,地理定位。。。实际上,这是一个很大的方法。这就是为什么我把它分成两部分,通过承诺连接起来,然后使用它们,所以我的方法看起来很像这样: assignChat(user){ const getLocationName =
- 离子3
- 角度4
- 打字脚本/ES6
assignChat(user){
const getLocationName = () => {
return new Promise((resolve,reject) => {
// 30 lines of code
});
}
const assignOrCreateChat= (area) => {
return new Promise((resolve,reject) => {
// 40 lines of code
});
}
const getLocationName = () => {
return new Promise((resolve,reject) => {
// 30 lines of code
});
}
// then I use the inner functions here and write an extra 60-70 lines of code
}
好的!这个很好用。经过几次测试后,该算法没有太多问题,尽管它相当繁重,需要~0.5秒才能正确执行、完成查询并显示结果
事情是。。。我有一些祝酒台显示一些信息,比如你在哪里。我想删除它们,从内部函数getLocationName()开始。这就是我想跟大家讨论的代码:
const getLocationName = () => {
return new Promise( (resolve, reject) => {
const ADDRESS_LEVEL = 2;
this.reverseGeocode(ADDRESS_LEVEL).then( address => {
---> this.toastify("You have been located at: "+address, 1500);
let query = new Parse.Query("PoliticalArea");
// more code
我用箭头标出的那条线,就是给我带来问题的那条线我的意思是,你可能认为代码失败是因为行,但这完全是错误的!如果删除该行,算法会突然停止工作,并且无法显示任何结果
“toastify”方法是我为自己展示祝酒的一种快速方法。实际上,它工作得很好!这就是实现:
toastify(message, duration){
this.toastCtrl.create({
message: message,
duration: duration
}).present();
}
不像最危险的方法。事实上,如果没有它,代码似乎无法工作。如果我对这行进行注释,或者删除它,我就不会从我之前向您展示的大算法中得到任何结果或错误。我已经捕获了所有可能的异常,尽管API连接器没有超时,但每次它不显示toast时都会卡住
我只是不明白发生了什么。在我看来,这似乎是一件非常严肃的事情,棱角分明的团队应该进行调查
你知道那里有什么黑魔法吗
更新:
一些进一步的信息:当我浏览“bugged”视图(没有toastify行,因此不显示聊天结果)时,例如,单击另一个聊天(将视图推入导航控制器),它会以某种方式开始显示我期望的聊天结果。当我从navCtrl弹出新视图并返回页面时,预期结果现在可见
这是角形手表的问题吗?好的,解决方案不明显 看起来视图是在任务完成之前呈现的。这是一项艰巨的任务,所以也许这就是Angular不能正常工作的原因。尝试在构造函数和IonViewDiCenter()中执行它,但没有任何效果 我的最终解决方案是通过ApplicationRef,在方法的死胡同处使用.tick()方法,强制组件重新渲染
这一切都解决了 很难说清楚,因为不是所有的代码都包含在内(可以理解),我对烤面包机的体验是,如果
present()
是由一个包含create({})的变量声明的,那么它们似乎工作得更好(我会得到远程视图未发现错误)
所以让toast=…
然后toast.present()
可能是因为它是一个提供者,返回。。还有哪个生命周期事件保存了这段代码?@arkade我不知怎的找到了一个解释:我是否将这段代码放在IonViewDiCenter()的构造函数中并不重要,所以我认为可能视图试图在实际完成任务之前由Angular渲染。我马上就发布修复程序。