Javascript 使击倒可观察立即应用?

Javascript 使击倒可观察立即应用?,javascript,knockout.js,Javascript,Knockout.js,我的页面有一个部分绑定到了一个淘汰的Viewmodel。当我点击一个链接时,它会加载一些数据,并将其向下显示一点。我想在加载img时显示一点,然后加载数据,完成后隐藏它。我有以下代码(精简以显示重要部分)。Ajax调用是而不是异步的,对于其他人正在使用的代码,它被设置为false,因此我无法更改它。问题是“self.Loading(false)”在ajax调用完成之前不会被触发,因此它看起来根本不会出现。如果我将ajax调用切换为async,它将按预期工作。所以我想知道为什么Ajax调用会阻止可

我的页面有一个部分绑定到了一个淘汰的Viewmodel。当我点击一个链接时,它会加载一些数据,并将其向下显示一点。我想在加载img时显示一点,然后加载数据,完成后隐藏它。我有以下代码(精简以显示重要部分)。Ajax调用是而不是异步的,对于其他人正在使用的代码,它被设置为false,因此我无法更改它。问题是“self.Loading(false)”在ajax调用完成之前不会被触发,因此它看起来根本不会出现。如果我将ajax调用切换为async,它将按预期工作。所以我想知道为什么Ajax调用会阻止可观察的变化,因为它是在它之前调用的,它不应该立即启动吗。有没有办法强迫它立即触发

HTML:

试试这个

<a data-bind="click: GetInfo,valueUpdate: 'keyup'" href="javascript:;">
    <img data-bind="visible: Loading" src="myimg.jpg" alt="Loading" />
</a>

试试这个

<a data-bind="click: GetInfo,valueUpdate: 'keyup'" href="javascript:;">
    <img data-bind="visible: Loading" src="myimg.jpg" alt="Loading" />
</a>

试试这个

<a data-bind="click: GetInfo,valueUpdate: 'keyup'" href="javascript:;">
    <img data-bind="visible: Loading" src="myimg.jpg" alt="Loading" />
</a>

试试这个

<a data-bind="click: GetInfo,valueUpdate: 'keyup'" href="javascript:;">
    <img data-bind="visible: Loading" src="myimg.jpg" alt="Loading" />
</a>

可观察对象和DOM可能会立即更新,但您看不到它,因为浏览器可能没有时间绘制屏幕。请求正在阻止重新绘制,因为。。。它是非异步的。这正是您不应该发出非异步请求的原因


作为一种解决方法,您可以尝试通过使用
setTimeout
和0超时来强制事件循环旋转一次,以便在可观察到的更改后运行可怕的同步请求,但非常严重的是,只需将请求修复为异步。当您的代码被阻塞时,浏览器不能保证执行任何操作(包括运行任何加载动画)。

可观察对象和DOM可能会立即更新,但您看不到它,因为浏览器可能没有时间绘制屏幕。请求正在阻止重新绘制,因为。。。它是非异步的。这正是您不应该发出非异步请求的原因


作为一种解决方法,您可以尝试通过使用
setTimeout
和0超时来强制事件循环旋转一次,以便在可观察到的更改后运行可怕的同步请求,但非常严重的是,只需将请求修复为异步。当您的代码被阻塞时,浏览器不能保证执行任何操作(包括运行任何加载动画)。

可观察对象和DOM可能会立即更新,但您看不到它,因为浏览器可能没有时间绘制屏幕。请求正在阻止重新绘制,因为。。。它是非异步的。这正是您不应该发出非异步请求的原因


作为一种解决方法,您可以尝试通过使用
setTimeout
和0超时来强制事件循环旋转一次,以便在可观察到的更改后运行可怕的同步请求,但非常严重的是,只需将请求修复为异步。当您的代码被阻塞时,浏览器不能保证执行任何操作(包括运行任何加载动画)。

可观察对象和DOM可能会立即更新,但您看不到它,因为浏览器可能没有时间绘制屏幕。请求正在阻止重新绘制,因为。。。它是非异步的。这正是您不应该发出非异步请求的原因


作为一种解决方法,您可以尝试通过使用
setTimeout
和0超时来强制事件循环旋转一次,以便在可观察到的更改后运行可怕的同步请求,但非常严重的是,只需将请求修复为异步。当您的代码被阻塞时,浏览器不能保证执行任何操作(包括运行任何加载动画)。

wtf valueUpdate是否与单击事件有关为了完整性起见,我尝试了它,但它确实不起作用,但是谢谢。wtf valueUpdate是否与单击事件有关出于完整性考虑,我尝试了它,但它确实不起作用,谢谢。wtf valueUpdate是否与单击事件有关出于完整性考虑,我尝试了它,但它确实不起作用,不过,谢谢。wtf valueUpdate是否与点击事件有关?为了完整性起见,我尝试了它,但它确实不起作用,谢谢。正如一则轶事,上次我看到一个基于非异步XHR的web应用程序时,它无法出售,必须从头重写。正如一则轶事,上一次我看到一个基于非异步XHR构建的web应用程序时,它是无法保存的,必须从头开始重写。就像一个轶事,上一次我看到一个基于非异步XHR构建的web应用程序时,它是无法保存的,必须从头开始重写。就像一个轶事,上次我看到一个基于非异步XHR构建的web应用程序时,它无法使用,必须从头开始重写。谢谢,耶,我个人也不喜欢同步请求,我相信它最初是为了让一个敲除绑定等待数据加载的,因为它没有绑定到任何东西,然后更改导致奇怪的闪烁,但是这个问题比这个问题更容易解决。从不知道同步阻止重画,以为它只是阻止了你的顶级代码。我会看看是否有可能改变它。谢谢,耶,我个人也不喜欢同步请求,我相信最初设置它是为了让一个击倒绑定等待数据加载,因为它没有绑定到任何东西,然后改变导致奇怪的闪烁,但这个问题比这个问题更容易解决。从不知道同步阻止重画,以为它只是阻止了你的顶级代码。我会看看是否有可能改变它。谢谢,耶,我个人也不喜欢同步请求,我相信最初设置它是为了让一个击倒绑定等待数据加载,因为它没有绑定到任何东西,然后改变导致奇怪的闪烁,但这个问题比这个问题更容易解决。从不知道同步阻止重画,以为它只是阻止了你的顶级代码。我会看看是否有可能改变它。谢谢,是的,我个人也不喜欢同步请求,我相信