Maison Applet WeChat Développement de mini-programmes Le processus de mise en œuvre du traitement des processus asynchrones par Promise dans l'applet WeChat

Le processus de mise en œuvre du traitement des processus asynchrones par Promise dans l'applet WeChat

May 15, 2018 pm 05:10 PM
promise 小程序 流程

Cet article présente principalement des informations pertinentes sur les exemples détaillés d'utilisation de Promise pour le traitement de processus asynchrones dans les mini-programmes WeChat. Voici une explication détaillée de la façon d'utiliser Promise pour traiter des processus asynchrones et fournit des étapes de mise en œuvre spécifiques. Suivant

Une explication détaillée d'un exemple d'utilisation de Promise pour le traitement de processus asynchrone dans une applet WeChat

Nous savons que JavaScript est exécuté en un seul processus, et les opérations synchrones affecteront l'exécution du traitement de blocage. Par exemple, dans un programme de page de navigateur, si un morceau de code synchronisé prend beaucoup de temps à s'exécuter (comme une opération en boucle importante), la page restera bloquée.

Ainsi, en JavaScript, certaines fonctionnalités asynchrones sont fournies pour offrir des avantages en termes de performances et d'expérience au programme. Par exemple, le code peut être exécuté dans setTimeout(); demande de données asynchrone au serveur. Ces codes asynchrones ne bloqueront pas le processus principal de l'interface actuelle et l'interface peut toujours fonctionner de manière flexible. Le traitement correspondant sera effectué une fois l'exécution du code asynchrone terminée.

Un code asynchrone typique ressemble à ceci :

function asyncFunc(callback) {
 setTimeout(function () {
  //在这里写你的逻辑代码
  //...

  //逻辑代码结束,执行一个回调函数
  callback();
 }, 5000);
}
Copier après la connexion

ou :

function getAccountInfo(callback, errorCallback) {
 wx.request({
  url: '/accounts/12345',
  success: function (res) {
   //...
   callback(data);
  },
  fail: function (res) {
   //...
   errorCallback(data);
  }
 });
}
Copier après la connexion

Ensuite, nous l'appelons ainsi :

asyncFunc(function () {
 console.log("asyncFunc() run complete");
});

getAccountInfo(function (data) {
 console.log("get account info successfully:", data);
}, function () {
 console.error("get account info failed");
});
Copier après la connexion

C'est une façon d'utiliser les fonctions de rappel pour contrôler le flux d'exécution du code. Cela semble bien et facile à comprendre.

Cependant, si nous avons trop d'opérations asynchrones dans un morceau de code et que nous devons nous assurer que ces opérations asynchrones sont exécutées dans l'ordre, alors notre code aura l'air très mauvais, comme ceci :

asyncFunc1(function(){
 //...
 asyncFunc2(function(){
  //...
  asyncFunc3(function(){
   //...
   asyncFunc4(function(){
    //...
    asyncFunc5(function(){
      //...
    });   });
  });
 });
});
Copier après la connexion

La lisibilité et la maintenabilité d'un tel code peuvent être imaginées. De plus, le vrai problème avec la fonction de rappel est :

Elle nous enlève la possibilité d'utiliser les mots-clés return et throw.

Alors, quels sont les moyens d'améliorer ce problème ? La réponse est oui, l’émergence du concept de Promesse résout bien tout cela. Concernant ce qu'est Promise, il y a beaucoup d'introductions après recherche, je ne vais pas copier-coller ici, je parlerai principalement de la façon dont nous l'utilisons pour résoudre nos problèmes.

Jetons un coup d'oeil, à quoi ressemblerait l'exemple ci-dessus si nous utilisions Promise ? Changeons d'abord ces fonctions en Promise :

function asyncFunc1(){
 return new Promise(function (resolve, reject) {
  //...
 })
}

 
// asyncFunc2,3,4,5也实现成跟asyncFunc1一样的方式...
Copier après la connexion

Jetons ensuite un œil à leur fonctionnement appelé comme ceci :

asyncFunc1()
 .then(asyncFunc2)
 .then(asyncFunc3)
 .then(asyncFunc4)
 .then(asyncFunc5);
Copier après la connexion

De cette façon, ces fonctions asynchrones seront exécutées une par une dans l'ordre.

ES6 prend en charge Promise de manière native, mais dans les environnements où Promise n'est pas pris en charge de manière native, nous disposons de nombreuses bibliothèques tierces pour le prendre en charge, telles que Q.js et Bluebird. En plus des API Promise standards, elles fournissent généralement des API non standards mais très utiles, rendant le contrôle des processus asynchrones plus élégant.

D'après la documentation API de l'applet WeChat, nous pouvons voir que de nombreuses fonctions de l'API JavaScript fournies par le framework sont en réalité asynchrones, comme wx.setStorage(), wx.getStorage(), wx.getLocation ( ), etc., ce sont également les méthodes de traitement de rappel fournies. En transmettant les fonctions de rappel de réussite, d'échec et complètes dans les paramètres, le succès ou l'échec de l'opération peut être traité séparément.

Par exemple :

wx.getLocation({ 
 type: 'wgs84', 
 success: function(res) { 
  var latitude = res.latitude 
  var longitude = res.longitude 
  var speed = res.speed 
  var accuracy = res.accuracy 
 },
 fail: function() {
  console.error("get location failed")
 }
})
Copier après la connexion

Pouvons-nous faire en sorte que l'API asynchrone de l'applet WeChat prenne en charge la promesse ? La réponse est oui, bien sûr, nous pouvons utiliser Promise pour encapsuler ces API une par une, mais cela reste assez gênant. Cependant, étant donné que le format des paramètres de l'API du mini-programme est relativement uniforme, il n'accepte qu'un seul paramètre d'objet et les rappels sont définis dans ce paramètre. Par conséquent, cela facilite notre traitement unifié et nous pouvons écrire un non-. outil intrusif. Méthode pour effectuer un tel travail :

Supposons que nous écrivions cette méthode outil dans un fichier nommé util.js :

var Promise = require('../libs/bluebird.min')  //我用了bluebird.js
function wxPromisify(fn) { 
 return function (obj = {}) {  
  return new Promise((resolve, reject) => {   
   obj.success = function (res) {    
    resolve(res)   
   }   

   obj.fail = function (res) {    
    reject(res)   
   }   

   fn(obj)  
  }) 
 }
}

module.exports = { 
 wxPromisify: wxPromisify
}
Copier après la connexion

Après cela, voyons comment l'utiliser. Cette méthode transforme l'API de rappel d'origine en une méthode Promise :

var util = require('../utils/util')

var getLocationPromisified = util.wxPromisify(wx.getLocation)

getLocationPromisified({
 type: 'wgs84'
}).then(function (res) {
 var latitude = res.latitude 
 var longitude = res.longitude 
 var speed = res.speed 
 var accuracy = res.accuracy 
}).catch(function () {
 console.error("get location failed")
})
Copier après la connexion

Est-ce facile à comprendre ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ouvrir plusieurs comptes Toutiao ? Quelle est la démarche pour demander un compte Toutiao ? Comment ouvrir plusieurs comptes Toutiao ? Quelle est la démarche pour demander un compte Toutiao ? Mar 22, 2024 am 11:00 AM

Avec la popularité de l'Internet mobile, Toutiao est devenue l'une des plateformes d'information les plus populaires de Chine. De nombreux utilisateurs espèrent disposer de plusieurs comptes sur la plateforme Toutiao pour répondre à différents besoins. Alors, comment ouvrir plusieurs comptes Toutiao ? Cet article présentera en détail la méthode et le processus de demande d'ouverture de plusieurs comptes Toutiao. 1. Comment ouvrir plusieurs comptes Toutiao ? La méthode d'ouverture de plusieurs comptes Toutiao est la suivante : Sur la plateforme Toutiao, les utilisateurs peuvent enregistrer des comptes via différents numéros de téléphone mobile. Chaque numéro de téléphone mobile ne peut enregistrer qu'un seul compte Toutiao, ce qui signifie que les utilisateurs peuvent utiliser plusieurs numéros de téléphone mobile pour enregistrer plusieurs comptes. 2. Inscription par e-mail : utilisez différentes adresses e-mail pour enregistrer un compte Toutiao. Semblable à l'enregistrement d'un numéro de téléphone mobile, chaque adresse e-mail peut également enregistrer un compte Toutiao. 3. Connectez-vous avec un compte tiers

Implémenter des effets de retournement de cartes dans les mini-programmes WeChat Implémenter des effets de retournement de cartes dans les mini-programmes WeChat Nov 21, 2023 am 10:55 AM

Implémentation d'effets de retournement de cartes dans les mini-programmes WeChat Dans les mini-programmes WeChat, la mise en œuvre d'effets de retournement de cartes est un effet d'animation courant qui peut améliorer l'expérience utilisateur et l'attractivité des interactions d'interface. Ce qui suit présentera en détail comment implémenter l'effet de retournement de carte dans l'applet WeChat et fournira des exemples de code pertinents. Tout d'abord, vous devez définir deux éléments de carte dans le fichier de mise en page du mini-programme, un pour afficher le contenu avant et un pour afficher le contenu arrière. L'exemple de code spécifique est le suivant : <!--index.wxml-. ->&l

Tenir parole : les avantages et les inconvénients de tenir ses promesses Tenir parole : les avantages et les inconvénients de tenir ses promesses Feb 18, 2024 pm 08:06 PM

Dans la vie quotidienne, nous rencontrons souvent des problèmes entre promesses et réalisation. Que ce soit dans une relation personnelle ou dans une transaction commerciale, tenir ses promesses est essentiel pour instaurer la confiance. Cependant, les avantages et les inconvénients de l’engagement sont souvent controversés. Cet article explorera les avantages et les inconvénients des engagements et donnera quelques conseils sur la façon de tenir parole. Les avantages promis sont évidents. Premièrement, l’engagement renforce la confiance. Lorsqu’une personne tient parole, elle fait croire aux autres qu’elle est une personne digne de confiance. La confiance est le lien établi entre les personnes, qui peut les rendre plus

Alipay a lancé le mini-programme « Chinese Character Picking-Rare Characters » pour collecter et compléter la bibliothèque de personnages rares. Alipay a lancé le mini-programme « Chinese Character Picking-Rare Characters » pour collecter et compléter la bibliothèque de personnages rares. Oct 31, 2023 pm 09:25 PM

Selon les informations de ce site du 31 octobre, le 27 mai de cette année, Ant Group a annoncé le lancement du « Projet de sélection de caractères chinois » et a récemment inauguré de nouveaux progrès : Alipay a lancé le mini-programme « Sélection de caractères chinois-Caractères rares ». pour collecter des collections de la société Les personnages rares complètent la bibliothèque de personnages rares et offrent différentes expériences de saisie pour les personnages rares afin d'aider à améliorer la méthode de saisie des caractères rares dans Alipay. Actuellement, les utilisateurs peuvent accéder à l'applet « Caractères peu communs » en recherchant des mots-clés tels que « capture de caractères chinois » et « caractères rares ». Dans le mini-programme, les utilisateurs peuvent soumettre des images de caractères rares qui n'ont pas été reconnus et saisis par le système. Après confirmation, les ingénieurs d'Alipay effectueront des entrées supplémentaires dans la bibliothèque de polices. Ce site Web a remarqué que les utilisateurs peuvent également découvrir la dernière méthode de saisie par fractionnement de mots dans le mini-programme. Cette méthode de saisie est conçue pour les mots rares dont la prononciation n'est pas claire. Démantèlement utilisateur

Les ancres de sommeil Douyin sont-elles rentables ? Quelles sont les procédures spécifiques à la diffusion en direct du sommeil ? Les ancres de sommeil Douyin sont-elles rentables ? Quelles sont les procédures spécifiques à la diffusion en direct du sommeil ? Mar 21, 2024 pm 04:41 PM

Dans la société actuelle en évolution rapide, les problèmes de qualité du sommeil touchent de plus en plus de personnes. Afin d'améliorer la qualité du sommeil des utilisateurs, un groupe d'ancres de sommeil spéciales est apparu sur la plateforme Douyin. Ils interagissent avec les utilisateurs via des diffusions en direct, partagent des conseils sur le sommeil et proposent de la musique et des sons relaxants pour aider les téléspectateurs à s'endormir paisiblement. Alors, ces ancres de sommeil sont-elles rentables ? Cet article se concentrera sur cette question. 1. Les ancres de sommeil Douyin sont-elles rentables ? Les ancres de sommeil Douyin peuvent en effet gagner certains bénéfices. Premièrement, ils peuvent recevoir des cadeaux et des transferts grâce à la fonction de pourboire dans la salle de diffusion en direct, et ces avantages dépendent de leur nombre de fans et de la satisfaction du public. Deuxièmement, la plateforme Douyin attribuera au présentateur une certaine part en fonction du nombre de vues, de likes, de partages et d'autres données de la diffusion en direct. Certaines ancres de sommeil seront également

Comment Uniapp réalise une conversion rapide entre les mini-programmes et H5 Comment Uniapp réalise une conversion rapide entre les mini-programmes et H5 Oct 20, 2023 pm 02:12 PM

La manière dont Uniapp peut réaliser une conversion rapide entre les mini-programmes et le H5 nécessite des exemples de code spécifiques. Ces dernières années, avec le développement de l'Internet mobile et la popularité des smartphones, les mini-programmes et le H5 sont devenus des formulaires de candidature indispensables. En tant que cadre de développement multiplateforme, uniapp peut réaliser rapidement la conversion entre les petits programmes et H5 sur la base d'un ensemble de codes, améliorant considérablement l'efficacité du développement. Cet article présentera comment Uniapp peut réaliser une conversion rapide entre les mini-programmes et H5, et donnera des exemples de code spécifiques. 1. Introduction à uniapp unia

Comment gérer l'enregistrement du mini-programme Comment gérer l'enregistrement du mini-programme Sep 13, 2023 pm 04:36 PM

Étapes de l'opération d'enregistrement du mini-programme : 1. Préparez des copies des cartes d'identité personnelles, des licences commerciales, des cartes d'identité des personnes morales et d'autres documents de classement ; 2. Connectez-vous à l'arrière-plan de gestion du mini-programme ; 3. Accédez à la page des paramètres du mini-programme ; Sélectionnez " "Paramètres de base" ; 5. Remplissez les informations de dépôt ; 6. Téléchargez les documents de dépôt ; 7. Soumettez la demande de dépôt ; 8. Attendez les résultats de l'examen. Si le dépôt n'est pas accepté, apportez des modifications en fonction des raisons. et soumettre à nouveau la demande de dépôt; 9. Les opérations de suivi du dépôt sont celles du Can.

En savoir plus sur Promise.resolve() En savoir plus sur Promise.resolve() Feb 18, 2024 pm 07:13 PM

Une explication détaillée de Promise.resolve() nécessite des exemples de code spécifiques. Promise est un mécanisme en JavaScript pour gérer les opérations asynchrones. Dans le développement réel, il est souvent nécessaire de traiter certaines tâches asynchrones qui doivent être exécutées dans l'ordre, et la méthode Promise.resolve() est utilisée pour renvoyer un objet Promise qui a été rempli. Promise.resolve() est une méthode statique de la classe Promise, qui accepte un

See all articles