<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Play hard, study hard! &#187; javascript</title>
	<atom:link href="http://blog.pakpak.jp/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.pakpak.jp</link>
	<description></description>
	<lastBuildDate>Sat, 27 Feb 2010 04:30:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ExternalInterface</title>
		<link>http://blog.pakpak.jp/2009/09/12/external-interface-call/</link>
		<comments>http://blog.pakpak.jp/2009/09/12/external-interface-call/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 12:37:29 +0000</pubDate>
		<dc:creator>pakpak</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://blog.pakpak.jp/?p=158</guid>
		<description><![CDATA[一つ前のエントリで取り上げたlog.asの実装のこの部分。

25
26
27
28
29
30
31
32
33
34
35
36
37
        try &#123;       
          Exte [...]]]></description>
			<content:encoded><![CDATA[<p>一つ前のエントリで取り上げたlog.asの実装のこの部分。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">        <span style="color: #0066CC;">try</span> <span style="color: #66cc66;">&#123;</span>       
          ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;&gt;&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>obj, klassName<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
               obj.<span style="color: #0066CC;">toString</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #b1b100;">return</span> klassName <span style="color: #66cc66;">&#125;</span>;
               console.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>obj<span style="color: #66cc66;">&#41;</span>;
               ;<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>  
              <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;&lt;/&gt;</span>.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,
              ObjectUtil.<span style="color: #006600;">clone</span><span style="color: #66cc66;">&#40;</span>arg<span style="color: #66cc66;">&#41;</span>,
              getQualifiedClassName<span style="color: #66cc66;">&#40;</span>arg<span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#41;</span>;    
        <span style="color: #66cc66;">&#125;</span> <span style="color: #0066CC;">catch</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:<span style="color: #0066CC;">Error</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
          ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'console.log'</span>, r<span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>ExternalInterface.callの第一引数がなんか見慣れない書式。<br />
なんかオブジェクトつくってtoStringしてる？<br />
調べてみた。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package <span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #66cc66;">*</span>;
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Hello <span style="color: #0066CC;">extends</span> Sprite <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Hello<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">var</span> hoge:<span style="color: #0066CC;">Object</span> = <span style="color: #66cc66;">&lt;&gt;&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>obj, klassName<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
         obj.<span style="color: #0066CC;">toString</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #b1b100;">return</span> klassName <span style="color: #66cc66;">&#125;</span>;
         console.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>obj<span style="color: #66cc66;">&#41;</span>;
         ;<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;&lt;/&gt;</span>;
      <span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>hoge<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>hoge.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; 
    <span style="color: #66cc66;">&#125;</span> 
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><a href="http://blog.pakpak.jp/wp-content/uploads/2009/09/d8eddf5329882d76f0b5323c6fd8e79a1.png"><img src="http://blog.pakpak.jp/wp-content/uploads/2009/09/d8eddf5329882d76f0b5323c6fd8e79a1.png" alt="ピクチャ 3" title="ピクチャ 3" width="831" height="180" class="alignleft size-full wp-image-163" /></a><br />
なるほどー。CDATAセクションのみのXMLListオブジェクトつくってtoStringしてるんですね。それにしても変わった書式。</p>
<p>というか、<a href=" http://livedocs.adobe.com/flex/2_jp/langref/flash/external/ExternalInterface.html">ExternalInterface.call</a>の第一引数、evalしたときに関数になってたら何でもokなんすね。<br />
これならjs,flashの連携が楽にできそ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pakpak.jp/2009/09/12/external-interface-call/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSDeferred</title>
		<link>http://blog.pakpak.jp/2009/05/08/jsdeferred/</link>
		<comments>http://blog.pakpak.jp/2009/05/08/jsdeferred/#comments</comments>
		<pubDate>Fri, 08 May 2009 02:13:01 +0000</pubDate>
		<dc:creator>pakpak</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://blog.pakpak.jp/?p=22</guid>
		<description><![CDATA[JSDeferredとは？
JSDeferredはcho45さんがモチキのDeferred機構に影響されて作ったらしいJavascript用の非同期処理ライブラリで、煩雑になりがちな複数の非同期処理間の協調動作を、簡単か [...]]]></description>
			<content:encoded><![CDATA[<h4><a href="http://coderepos.org/share/wiki/JSDeferred">JSDeferred</a>とは？</h4>
<blockquote><p>JSDeferredはcho45さんがモチキのDeferred機構に影響されて作ったらしいJavascript用の非同期処理ライブラリで、煩雑になりがちな複数の非同期処理間の協調動作を、簡単かつ柔軟に記述できるステキングなライブラリ<br />
引用：<a href="http://unsigned.g.hatena.ne.jp/Trapezoid/20080425/1209054401">http://unsigned.g.hatena.ne.jp/Trapezoid/20080425/1209054401</a></p></blockquote>
<p>desu。</p>
<h4>非同期処理</h4>
<p>そもそも非同期処理とはどのようなものかといいますと、XHRリクエストがそのひとつです。<br />
この例では、1,2,3の順に処理が実行されます。なれればなんてことないですが、処理順序が逆転していることがわかります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> myAjax <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
				method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
				onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>もうすこし複雑な例。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
  method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
  onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url2<span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>
      method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
      onComplete<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res2<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>res2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>うーん、もう処理順序がぐちゃぐちゃで処理を追いづらいですね。。</p>
<h4>JSDeferredをつかうと。</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">ajax_request<span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span>.
<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
 console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ajax_request</span><span style="color: #009900;">&#40;</span>url2<span style="color: #009900;">&#41;</span>.
<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res2<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
 console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>res2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
vaf ajax_request <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> d<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> Deferred<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>
      method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
      onComplete<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        d.<span style="color: #660066;">call</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">return</span> d<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
Deferred.<span style="color: #660066;">register</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ajax_request'</span><span style="color: #339933;">,</span>ajax_request<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>だいたいこんな感じに書けます。(直接ここに書いたので間違ってるかもしれません^^;）<br />
ちゃんと上から順に実行されていくので、処理の流れを理解しやすいですね！</p>
<h4>しくみ</h4>
<p>ソースよんでくらはいｗ<br />
短いですが、javascriptのエッセンスがつまっていてとても勉強になると思います。</p>
<p><strong>参考：</strong></p>
<p>http://d.hatena.ne.jp/amachang/20060910/1157911122</p>
<p>http://labs.gmo.jp/blog/ku/2007/09/firefoxsettimeout.html</p>
<p>http://ido.nu/kuma/2007/11/29/coding-synchronized-asynchronous-processing-intuitively-with-mochikit-async-deferred/</p>
<p>http://d.hatena.ne.jp/amachang/20080303/1204544340</p>
<p>http://d.hatena.ne.jp/amachang/20061129/1164799871</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pakpak.jp/2009/05/08/jsdeferred/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
