recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - problème d'optimisation de nodejs

Si je dois utiliser nodejs pour demander plusieurs interfaces Java et enfin obtenir toutes les données pour afficher la page, comment puis-je améliorer la vitesse
J'étais comme ça avant

 //请求接口
  http.tp(options,function(error,response,tags){
        http.tp(options1,function(error,response,topic){
            http.tp(follow,function(error,response,follow){
                http.tp(options2,function(error,response,topicRCMD){
                    data={
                        follow:follow,
                        topicRCMD:topicRCMD,
                        tags:tags,
                        topicHot:topic,
                    }
                    opt.render(data);  //渲染页面
                })
            })
        })
    })

C'est très lent. Ensuite, j'ai cité async

return async.parallel({
        //我关注的人
        follow:function(callback){
            http.tp(follow,function(error, response, follow){
                callback(null, follow);
            })
        },
        // 获取标签
        tags:function(callback){
            http.tp(options,function(error, response, tags){
                callback(null, tags);
            })
        },
        // 获取热门话题
        topicHot:function(callback){
            http.tp(options1,function(error, response, topicHot){
                callback(null, topicHot);
            })
        },
        // 获取推荐话题列表
        topicRCMD:function(callback){
            http.tp(options2,function(error, response, topicRCMD){
                callback(null, topicRCMD);
            })
        }
    },
    function(err, results){
        console.log('ssss:',results);
        opt.render(results); //渲染页面
    });

Cela rend la vitesse un peu plus rapide, mais elle reste très lente. Existe-t-il une bonne solution à cela

?
过去多啦不再A梦过去多啦不再A梦2785 Il y a quelques jours481

répondre à tous(5)je répondrai

  • ringa_lee

    ringa_lee2017-05-16 13:46:59

    La première méthode est lente car le temps qu'elle prend est la somme de tous les temps de requête ; la deuxième méthode ne prend que le temps de la requête la plus longue, ce qui sera naturellement plus rapide
    Si vous souhaitez l'optimiser, vous devez le faire en le processus de rendu ou Le processus de traitement des requêtes côté serveur a été optimisé

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 13:46:59

    Vous ne pouvez utiliser que quelque chose comme promise.all. S'il existe une bonne méthode, dites-le-moi.

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:46:59

    Ce problème est en fait un problème de stratégie de rendu. En fait, il n'est pas nécessaire de terminer toutes les demandes de données dans Node avant de les envoyer au client.

    Vous pouvez complètement confier cette étape de demande de données au client, puis le client utilise ajax pour obtenir les données. Cela élimine le besoin d’attendre que toutes les données soient obtenues.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:46:59

    Vous pouvez utiliser la nouvelle promesse dans la syntaxe es6 pour résoudre spécifiquement votre situation de trou noir de rappel.

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:46:59

    J'ai l'impression que je dois considérer deux points. Premièrement, comptez-vous sur le précédent pour tout ? Est-il possible d'envoyer certaines requêtes en parallèle ? Deuxièmement, est-il possible de distinguer les priorités et de laisser le client envoyer des requêtes ? Après tout, la fenêtre du client n'est pas grande et la relation entre les priorités sera claire lorsque le client envoie. les demandes, les plus importantes sont envoyées en premier. Les utilisateurs le verront lors du chargement du premier écran, puis publieront les suivantes

     ;

    répondre
    0
  • Annulerrépondre