【问题标题】:can I invoke a procedure synchronously?我可以同步调用一个过程吗?
【发布时间】:2015-10-21 23:51:30
【问题描述】:

这听起来有点疯狂,但有没有办法同步调用一个过程?

我正在使用 MobileFirst Platform Foundation 7.1,并且正在为浏览器编写一个使用 javascript 的应用程序。我通常通过以下方式调用我的 javascript 适配器:

WL.Client.invokeProcedure({
    adapter: 'MyAdapter',
    procedure: 'myProcedureName',
    parameters: []
}).then(function(res) {
   ...
});

但在这种特殊情况下,我需要在从服务器获取一些数据后打开另一个窗口。由于浏览器会在来自异步 ajax 时阻止窗口,因此我的新窗口永远不会打开。

A way to solve this would be to do the ajax request sync。这可能与 WL.Client apis 吗?有没有办法手动构建请求,以便我可以自己设置同步 ajax 标志?

PS:在我的情况下,同步 ajax 请求会很好用,因为我会在所有内容之上显示“正在加载...”视图,以防止在请求完成时进行用户交互。

【问题讨论】:

    标签: ibm-mobilefirst mobilefirst-adapters


    【解决方案1】:

    WL.Client.connect() 不支持.then。此外,从 7.0 开始,您应该使用 REST API 方法 WLResourceRequest: https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-1/foundation/server-side-development-category/

    最后,您可以将第二个请求放在第一个的 onSuccess 回调中...

    【讨论】:

    • 现在我正在使用没有.then 的 WL.Client.connect() 并且我认为到目前为止它工作正常。我无法使用 REST WLResourceRequest,因为我的应用程序用于浏览器并且我正在使用 Javascript 适配器。我只想做一个简单的同步 ajax 调用(不需要修改 WL.Client.connect 的东西),但显然是不可能的,对吧?
    • 经过很长时间...谢谢 Idan,我意识到没有必要做我最初想做的事情(同步请求)。我意识到这是一个典型的 javascript 事件问题,所以我首先打开窗口并触发我的请求,然后当请求完成时,我根据需要填充新窗口内容。
    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多