anchor.diff:  include::embed/embed-async-onready.js[]
   ----
   
  -この問題については、 http://effectivejs.com/[Effective JavaScript] の
  -**項目67 非同期コールバックを同期的に呼び出してはいけない** で紹介されています。
  +关于这个问题，在 http://effectivejs.com/[Effective JavaScript] 的 **第67项 不要对异步回调函数进行同步调用** 中也有详细介绍。
   
   [quote, David Herman, Effective JavaScript]
   ____
  -- 非同期コールバックは（たとえデータが即座に利用できても）決して同期的に使ってはならない。
  -- 非同期コールバックを同期的に呼び出すと、処理の期待されたシーケンスが乱され、
  -コードの実行順序に予期しない変動が生じるかもしれない。
  -- 非同期コールバックを同期的に呼び出すと、スタックオーバーフローや例外処理の間違いが発生するかもしれない。
  -- 非同期コールバックを次回に実行されるようスケジューリングするには、`setTimeout` のような非同期APIを使う。
  +- 绝对不能对异步回调函数（即使在数据已经就绪）进行同步调用。
  +- 如果对异步回调函数进行同步调用的话，处理顺序可能会与预期不符，可能带来意料之外的后果。
  +- 对异步回调函数进行同步调用，还可能导致栈溢出或异常处理错乱等问题。
  +- 如果想在将来某时刻调用异步回调函数的话，可以使用 `setTimeout` 等异步API。
   ____
   
  -先ほどの `promise.then` も同様のケースであり、この同期と非同期処理の混在の問題が起きないようにするため、
  -**Promiseは常に非同期** で処理されるという事が仕様で定められているわけです。
  +前面我们看到的 `promise.then` 也属于此类，为了不编码上述的同步异步调用可能引起的混乱，Promise在规范上规定 **Promise只能使用异步调用方式** 。
   
  -最後に、この `onReady` をPromiseを使って定義すると以下のようになります。
  +最后，将上面的 `onReady` 函数用Promise重写的话，代码如下面所示。
   
   [role="executable"]
   [source,javascript]
  
positive.code: outer promise
  ----
  
  つまり、Promiseは常に非同期で処理が行われているという事になります。
  ////
negative.code: console.log("outer promise");// <2>
  ----
  
  可以看出在`promise.then` 中注册的回调函数都是以异步方式进行调用的。
  
  [NOTE]
  ====
  在实际运用的时候我们不需要使用 `setTimeout` 或 `setImmediate` 等进行显示的异步方法调用。从设计上来说， `promise.then` 方法会将回调函数进行 `EnqueueTask` 操作，即将这个函数插入到队列中去。
  ====
  
  假如Promise使用同步的方式对回调函数进行调用的话，在调用 `promise.then` 的时候promise的状态已经确定，如果使用同步调用方式的话，运行结果将会像下面一样。
  
  ----
  inner promise
  