2017-10-11 2 views
0

Ce qui suit est un extrait de code Redux que je débogue, rien de vraiment spécial. Ma question concerne le débogage dans Chrome Dev Tools.Techniques de débogage dans Chrome Dev Tools

Le problème consiste à définir le point d'arrêt (bp) dans le rappel .then(({ data }) => dispatch({. Je peux définir un bp sur cette ligne mais à cause de la fonction de flèche, je ne peux pas définir un bp sur user: data.results[0], dans cette fonction.

Que puis-je faire pour mettre un pb pour que je puisse inspecter data ou data.results[0]
Puis-je déboguer en quelque sorte dans la chaîne de promesse?

export const login = (username, password) => (dispatch) => { 
    return dispatch({ 
    type: LOGIN, 
    payload: { 
     username, 
     password, 
    } 
    }) 
    .then(({ data }) => dispatch({ 
    type: LOGIN_SUCCESS, 
    payload: { 
     user: data.results[0], 
    }, 
    })) 
    .catch((error) => { 
    dispatch({ 
     type: LOGIN_FAIL, 
     payload: { 
     error: error.message, 
     }, 
    }); 
    }); 
}; 
+0

pourquoi ne pas simplement envelopper l'appel à 'dispatch' accolades de la même manière que le .catch? alors c'est une déclaration séparée sur laquelle vous pouvez vous arrêter. Oui, le code final n'en a pas forcément besoin, mais bon code vous permet de déboguer facilement aussi - allez avec ce qui rend votre vie plus facile, pas nécessairement le code le plus propre absolu –

+0

Supposément, Chrome peut gérer les points d'inflexion sur les fonctions inline & flèches https://umaar.com/dev-tips/129-inline-breakpoints/) maintenant. N'a pas fonctionné pour moi lors de l'utilisation de cartes de cours cependant - mais vous pourriez avoir plus de succès – CodingIntrigue

+0

Cheers James & Codingintrigue – Rory

Répondre

-3

Avez-vous essayé

debugger; 

?

Il est même du point de rupture, mais ne pas oublier d'enlever après le débogage =)

+1

Ce serait redondant. Pour introduire une instruction 'debugger;', vous devez introduire un bloc de code. Lequel vous pourriez mettre un point d'arrêt de toute façon ... – CodingIntrigue

0

Remplacer la fonction .alors avec le texte ci-dessous:

.then(function({ data }) { 
    dispatch({ 
     type: LOGIN_SUCCESS, 
     payload: { 
      user: data.results[0], 
     }, 
     }) 
    }) 

Maintenant, vous devriez être en mesure de débogage.

Vous pouvez consulter JavaScript promise resolving with setTimeout pour une meilleure compréhension de => et la fonction() {}