anchor.diff:  [[promise-is-always-async]]
  -== コラム: Promiseは常に非同期?
  +== 专栏: Promise只能进行异步操作？
   
  -<<Promise.resolve, `Promise.resolve(value)`>> 等を使った場合、
  -promiseオブジェクトがすぐにresolveされるので、`.then` に登録した関数も同期的に処理が行われるように錯覚してしまいます。
  +在使用<<Promise.resolve, `Promise.resolve(value)`>> 等方法的饿时候，如果promise对象立刻就能resolve的话，那么你是不是觉得 `.then` 里面指定的方法就是同步调用的呢？
   
  -しかし、実際には `.then` で登録した関数が呼ばれるのは、非同期となります。
  +但实际上 `.then` 中指定的方法调用是异步进行的。
   
   [role="executable"]
   [source,javascript]
  
positive.code: outer promise
  ----
  
  つまり、Promiseは常に非同期で処理が行われているという事になります。
  ////
negative.code: 42
  ----
  
  由于JavaScript代码会按照文件的从上到下的顺序执行，所以最开始 `<1>` 会执行，然后是 `resolve(42);` 被执行。这时候 `promise` 对象的已经变为确定状态，FulFilled被设置为了 `42` 。
  
  下面的代码 `promise.then` 注册了 `<3>` 这个回调函数，这是本专栏的焦点问题。
  
  由于 `promise.then` 执行的时候promise对象已经是确定状态，从程序上说对回调函数进行同步调用也是行得通的。
  
  但是即使在调用 `promise.then` 注册回调函数的时候promise对象已经是确定的状态，Promise也会以异步的方式调用该毁掉函数，这是在Promise设计上就决定了方针。
  
  因此 `<2>` 会最先被调用，最后才会调用回调函数 `<3>` 。
  
  为什么要对明明可以以同步方式进行调用的函数，非要使用异步的调用方式呢？
  
  === 同步调用和异步调用同时存在导致的混乱
  
  其实在Promise之外也存在这个问题，这里我们以一般的使用情况来考虑此问题。
  
  这个问题的本质是接收回调函数的函数，会根据具体的执行情况，可以选择是以同步还是异步的方式对回调函数进行调用。
  
  下面我们以 `onReady(fn)` 为例进行说明，这个函数会接收一个回调函数进行处理。
  
  
  [role="executable"]
  