2

ColdFusion 開発者として、スレッドや非同期プログラミング モデル (ajax を除く) を使用したことはありません。invokeCFClientFunction() は、coldfusion 関数を非同期的に呼び出すために cfclient に導入された新しい関数です。しかし、この関数をいつ使用するべきかについて少し混乱しています。この例は cfclient ドキュメントから実行しました

<cfClientSettings detectDevice=true />


<cfclient>


<cffunction access="public" name="showCanvasSupport" returntype="void" >
     <cfset evalStr = "document.getElementById('canvas').innerHTML='"                
                       & cfclient.canvas & "'">
     <cfset eval(#evalStr#)>
</cffunction>          


</cfclient>


Canvas support -<b id="canvas"></b><br>
<button onclick="invokeCFClientFunction('showCanvasSupport',null)">
Show canvas support
</button>

invokeCFClientFunction() を使用せずに呼び出しましたが、正常<button onclick="showCanvasSupport()">に動作しています。

では、どのような場合にそれを使用する必要があるのでしょうか?

4

2 に答える 2

0

ひっくり返して、ディーパック: どちらにせよ、あなたの期待は何ですか? 片道でうまくいきませんか?それはあまり意味がありません。

ドキュメント (「同期および非同期関数呼び出し」) はかなりあいまいですが、あなたはそれらを読んでいないようです。重要な部分 - 関数の存在理由 - は次のとおりです。

JavaScript から非同期の ColdFusion 関数を呼び出す場合は、invokeCFClientFunction を使用する必要があります。

showCanvasSupport()そして、非同期要素を持たない関数を呼び出しています。そう:

  1. invokeCFClientFunction()そもそもなんで使おうとするの?
  2. そうすることで何を達成したいですか?

コードを無作為に試して、それが何をしているのかわからないときに頭を悩ましているように思えます。なぜこの関数を見ているのですか?そうすべきではないと言っているわけではありませんが、そもそもコードにそれを入れる理由があるに違いありません。

于 2014-04-19T12:54:36.813 に答える