改变 promise 状态和指定回调函数谁先谁后?

都有可能, 正常情况下是先指定回调再改变状态, 但也可以先改状态再指定回调

如何先改状态再指定回调?

在执行器中直接调用 resolve()/reject()
延迟更长时间才调用 then()

什么时候才能得到数据?

如果先指定的回调, 那当状态发生改变时, 回调函数就会调用, 得到数据
如果先改变的状态, 那当指定回调时, 回调函数就会调用, 得到数据