דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. שאלה ב-node.js async.each

שאלה ב-node.js async.each

מתוזמן נעוץ נעול הועבר ארכיון code613m
12 פוסטים 3 כותבים 600 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    אהרן
    כתב ב נערך לאחרונה על ידי
    #1
    async.each(openFiles, function(file, callback) {
    
      // Perform operation on file here.
      console.log('Processing file ' + file);
    
      if( file.length > 32 ) {
        console.log('This file name is too long');
        callback('File name too long');
    

    לאן נשלח המחרוזת File name too long ?
    ל-each שמפסיק לעבור לאיברים הבאים ומחזיר א"ז לפונקציה שהפעילה אותו?

    תודה!

    פורסם במקור בפורום CODE613 ב08/09/2015 23:12 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • א מנותק
      א מנותק
      אהרן
      כתב ב נערך לאחרונה על ידי
      #2
      each(arr, iterator, [callback])
      

      מה זה iterator ?

      פורסם במקור בפורום CODE613 ב08/09/2015 23:14 (+03:00)

      תגובה 1 תגובה אחרונה
      0
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

        למיטב ידיעתי, באופן כללי (לא יודע מה זה בפונקציה הזאת, אבל מעריך שגם כאן זה כך..)
        iterator הוא ממשק המשמש כדי לעבור על מערכים ואוספים איבר אחר איבר.

        פורסם במקור בפורום CODE613 ב08/09/2015 23:33 (+03:00)

        תגובה 1 תגובה אחרונה
        2
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          במקרה הזה הפרמטר iterator הוא הפונקציה שיש להפעיל כל איטרציה - מעבר.
          אם יש לך מערך של מספרים: 1,50,8,4 ואתה רוצה את הכפל של כל אחד בעצמו, אז אתה תשים בפרמטר איטרטור פונקציה שמקבלת פרמטר ומדפיסה את הכפל שלו בעצמו.
          הcallback נשלח ע"י המפעיל, שזה המודול של async. נדמה לי שזוהי פונקציה שמקבלת פרמטר שמייצג שגיאה. הפונקציה מקבלת כל פעם את הקריאות אליה, ולבסוף (אחרי שעובדו כל האיברים) מפעילה את הפוקנציה של הפמטר השלישי callback ומשימה בפרמטר שלו את השגיאה הראשונה אם הייתה.

          פורסם במקור בפורום CODE613 ב09/09/2015 00:12 (+03:00)

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          2
          • א מנותק
            א מנותק
            אהרן
            כתב ב נערך לאחרונה על ידי
            #5

            ניסתי ליישם את מה שהבנתי
            יש פה בעיות, אני יודע
            אשמח אם תציץ על זה כמה רגעים ותצביע על שגיאות בולטות

            app.post('/getajax2', function( req , res) {
              var words =    req.body.sendWord;
              var indexElm = req.body.indexElm;
            
              db.getNikudEvent2( 'word', function( nikudim )
                  {
                      if(!nikudim)
                          res.status(404).send('Not found');
                      else   
                        var obj = { nikudim: nikudim, indexElm: indexElm };
                        res.send( obj );
                  });
            });
            
            
            exports.getNikudEvent2 = function ( words, send ) {
            
              var nikudim = [];
              var index = 0;
              if( typeof words == 'string' ) words = words.split();
            
              async.each(words, function searchFromDb( word, next ) {
                //console.log('arguments: ', arguments)
                function pushNikud( nikud ) {
                console.log(next.toString())
                  console.log('push')
                  nikudim.push(nikud);
                  next();
                }
                db.get(word, function (err, value) {
                  console.log('get', word, value, index);
                  if (err) {
                    console.log('Ooops cnot get nikud for: ', word) ;
                    var nWord = getMoreVariation( word, index );
                      if (nWord) {
                        index++;
                        console.log('try agein')
                        if (5 == index) pushNikud();
                        searchFromDb( word, next );
                      } else {
                        pushNikud();
                      }
                  }
                    value = value.split(',');
                    index = 0;
                    pushNikud( value );
                  });
                } 
                  , function() {
                      //console.log('finish each')
                      //console.log('nikudim: ', nikudim)
                      send( nikudim );
                    }
              );
            };
            

            פורסם במקור בפורום CODE613 ב09/09/2015 00:17 (+03:00)

            תגובה 1 תגובה אחרונה
            0
            • א מנותק
              א מנותק
              אהרן
              כתב ב נערך לאחרונה על ידי
              #6

              נשגב מבינתי מדוע נוצרת כאן לולאה אינסופית

              exports.getNikudEvent2 = function ( words, send ) {
                var nikudim = [];
                var index = 0;
                if( typeof words == 'string' ) words = words.split();
              
                async.each(words, function( word, next ) {
                  //console.log('arguments: ', arguments)
                    var pushNikud = function( value ) {
                      //console.log(next.toString())
                      if (value) console.log('push nikud')
                      else console.log('push zero')
                      if( value ) value = value.split(',');
                      nikudim.push(value);
                      index = 0;
                      next();
                    }
              //console.log('gg1')
              searchFromDb( word, index=0 )
                  function searchFromDb( word, index ) {
              //console.log('gg2')
                    db.get(word, function (err, value) {
                  //console.log('gg3')
                      console.log('get', word, value, index);
                      if (err) {
                        console.log('Ooops cnot get nikud for: ', word) ;
                        var nWord = getMoreVariation( word );
                          if (nWord) {
                            console.log('try agein')
                      //console.log('gg4')
                      //console.log(index)
                            if (5 < index) pushNikud();
                      //console.log('gg5')
                            searchFromDb( word, index++ );
                      //console.log('gg6')
                          } else {
                            pushNikud();
                          }
                      } else {
                        pushNikud( value );
                      }
                    });
                  }
                } 
                    , function() {
                        //console.log('finish each')
                        //console.log('nikudim: ', nikudim)
                        send( nikudim );
                      }
                );
              };
              

              פורסם במקור בפורום CODE613 ב09/09/2015 01:36 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                כתב ב נערך לאחרונה על ידי
                #7

                קשה... קשה לעבור על קוד ולהבין מה רצו ומה קשור ועוד...
                תעשה טוב ולך לאט לאט. אני מציע לא להשתמש בספריות עד שאתה מרגיש שולט לגמרי.
                וכעת בעיות ברפרוף:
                בקוד הראשון, המס' זה השורה:

                • 10,11 צריכים הקפת בלוק. כעת השורה 10 מותנית ושורה 11 מתקיימת בכל מקרה.
                • 25,26 חסר נקודה פסיק
                • 29 חסר סוגר לסגרית פרמטרי הפונקציה async.each
                • 30 המשתנה word לא קיים בקוד קודם
                • החל מ34 אני לא מבין כלום, ועכ"פ 43 לא ברור מה זה סוגר, נגמור בינתיים...

                בקוד השני:

                • 10,11,16 חסר נקודה פסיק
                  ועוד...

                ראה אני בטוח שלא באת בשביל תיקונים כאלה אלא בשביל דברים יותר עמוקים, אבל הפיציפקס הללו מעכבים...
                הרקורסיה אכן לא ברורה לי (צריך מידי לחשוב, נסה לפשט זאת) הבדיקה של הnWord לא נראית לי הגיונית.

                לדעתי אמורים להשתתף במבצע סה"כ ארבע פוקנציות. יותר מזה זה פיזור מבולגן.
                רקורסיה זה לא מומלץ אם אתה מסתבך, אפשר באותה מידה ליצור מערך פונקציות במקום שאחת תקרא לעצמה.
                תמשיך להתעקש ותצליח בגדול. בדוק.

                פורסם במקור בפורום CODE613 ב09/09/2015 13:07 (+03:00)

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                1
                • א מנותק
                  א מנותק
                  אהרן
                  כתב ב נערך לאחרונה על ידי
                  #8

                  רקורסיה זה לא מומלץ אם אתה מסתבך, אפשר באותה מידה ליצור מערך פונקציות במקום שאחת תקרא לעצמה.

                  מערך פונקציות? שו הדא??
                  אתה כנראה לא מתכוון ללולאה רגילה, כיון שצריך שבכל פעם הפונקציה תרוץ רק אחרי הקודמת הסתיימה.

                  פורסם במקור בפורום CODE613 ב20/09/2015 03:43 (+03:00)

                  תגובה 1 תגובה אחרונה
                  0
                  • א מנותק
                    א מנותק
                    אהרן
                    כתב ב נערך לאחרונה על ידי
                    #9

                    נסיתי ליישם ולפשט
                    שכל דבר יהיה בפונציה נפרדת שיהיה ברור מה כל שלב עושה
                    יש בעיות, אבל עד כאן הצלחתי

                    את פונקצית searchForAjx מריץ פונקצית הAJAX שהנחתי שמיותר להביא אותה

                    function searchForAjx( words, sendToClint ) {
                      //var words = ['word1', 'word2', 'word3'];
                      async.each(words, searchNikudForParagraph, sendToClint );
                    }
                      
                    function searchNikudForParagraph( word ) {
                      var nikudim = [];
                      searchForOneWord( word, function ( nikudim ) {
                          nikudim.push( nikudim );
                        });
                    }
                    
                    function searchForOneWord( word, pushNikudim ) {
                    
                      function searchFromDb( word, index ) {
                        var _word = word;
                          db.get( word, function (err, value) {
                            if( err && index < 5 ) {
                              _word = getVariations(_word);
                              searchFromDb( _word, index++ );
                            } else {
                              pushNikudim( value );
                            }
                          });
                      }
                    
                      searchFromDb( word, 0 );
                    }
                    
                    function getVariations( nweWord ) {
                      return nweWord;
                    }
                    

                    פורסם במקור בפורום CODE613 ב20/09/2015 03:44 (+03:00)

                    תגובה 1 תגובה אחרונה
                    0
                    • א מנותק
                      א מנותק
                      אהרן
                      כתב ב נערך לאחרונה על ידי
                      #10

                      כפרה אמיתית לליל כפרות..
                      עובד יפה אבל הניקודים לא נכנסים לפי הסדר למערך

                      exports.searchForAjx = searchForAjx;
                      var nikudim;
                      function searchForAjx( words, sendToClint ) {
                        nikudim = [];
                        //var words = ['word1', 'word2', 'word3'];
                        async.each(words, searchNikudForParagraph, function() {
                           sendToClint(nikudim); 
                        }); 
                      }
                        
                      function searchNikudForParagraph( word, next ) {
                        searchForOneWord( word, function ( nikud ) {
                            if( 'string' == typeof nikudim ) nikudim = nikudim.split();
                            nikud = nikud.split(',');
                            nikudim.push( nikud );
                            next();
                          });
                      }
                      
                      function searchForOneWord( word, pushNikudim ) {
                        function searchFromDb( word, index ) {
                          var _word = word;
                            db.get( word, function (err, value) {
                              if( err && index < 5 ) {
                                _word = getVariations(_word);
                                index++;
                                searchFromDb( _word, index );
                              } else {
                                if( !value ) { var value = 'ללא ניקוד'};
                                pushNikudim( value );
                              }
                            });
                        }
                        var index = 0;
                        searchFromDb( word, index );
                      }
                      
                      function getVariations( nweWord ) {
                        return nweWord;
                      }
                      

                      פורסם במקור בפורום CODE613 ב21/09/2015 20:39 (+03:00)

                      תגובה 1 תגובה אחרונה
                      0
                      • א מנותק
                        א מנותק
                        אהרן
                        כתב ב נערך לאחרונה על ידי
                        #11

                        אולי יחוס אולי ירחם 🙂

                        פורסם במקור בפורום CODE613 ב24/09/2015 21:35 (+03:00)

                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD מנותק
                          dovidD מנותק
                          dovid ניהול
                          כתב ב נערך לאחרונה על ידי
                          #12

                          ליבי עליך.
                          אני לא מצליח לקלוט בקלות JS, במיוחד כשזה מסתעף ואני לא מקיף את העניין...
                          אין לי זמן וכח מספיקים. חזק מתניים...

                          פורסם במקור בפורום CODE613 ב24/09/2015 21:57 (+03:00)

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          תגובה 1 תגובה אחרונה
                          1

                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

                          • התחברו או הירשמו כדי לחפש.
                          • פוסט ראשון
                            פוסט אחרון
                          0
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום