var p = new Promise((resolve, reject) => {
//这里的参数若是thenable的,规范有提到加入job队列,必然是异步的
//但是比如参数是数字,在返回promise之前,就已经修改了它的状态,这样似乎是同步的了
resolve(3);
});
console.dir(p.[[state]]);
Le code ci-dessus est-il synchrone ? Autrement dit, s'il y a p.[[state]]
,那么应该打印出fulfilled
,而不是pendding
.
p.then
La fonction de rappel dans la méthode est asynchrone, donc ça devrait aller
C'est sans aucun doute synchronisé.
Votre code est bien synchronisé, il existe un moyen simple de le vérifier
Regardez le code ci-dessus. Est-ce qu'il tape « in » en premier ? Cela signifie que l'exécution de la résolution et du rejet de la nouvelle Promise est synchrone. Si vous souhaitez la rendre asynchrone, vous pouvez l'écrire comme suit :
.De plus, l'exécution de
then
est effectivement asynchrone et peut être vérifiée en utilisant une méthode similaire.À propos, Promise a un modèle couramment utilisé, qui intègre les résultats de synchronisation dans Promise pour éliminer la différence entre les appels synchrones et asynchrones :