第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

forEach循環(huán)中的NodeJs功能需要先完成,然后再轉到下一項

forEach循環(huán)中的NodeJs功能需要先完成,然后再轉到下一項

動漫人物 2021-04-09 14:11:11
我有一個Nodejs腳本,其詳細信息如下所示:1)它向API請求以獲取城市列表,它將獲取JSON數(shù)組。使用此數(shù)組,我使用進行循環(huán)forEach。2)在每次迭代(第二循環(huán))時,我確實再次向API請求以獲取詳細信息(約100行)并將其插入mysql數(shù)據(jù)庫。我的問題是,如何在進入下一個項目(城市)之前使函數(shù)在第一個循環(huán)(要獲取城市列表的位置)內等待完成。我想使循環(huán)具有延遲順序。我的源代碼:const request = require('request');var moment = require('moment');var mysql = require('mysql');var a = moment('2019-04-01');var b = moment('2019-04-06');const sleep = (waitTimeInMs) => new Promise(resolve => setTimeout(resolve, waitTimeInMs));function timer(ms) { return new Promise(res => setTimeout(res, ms));}var connection = mysql.createConnection({    host : 'localhost',    user : 'user1',    password : 'password',    database : 'local'});async function getURL(id_city,dates) {    var url = 'https://localhost/api/format/json/schedule/city/'+id_city+'/date/'+dates;        request(url, { json: true }, (err, res, body) => {      if (err) { return console.log(err); }      // console.log(body.status);      var item1 = body.schedule.data.item1;      var item2 = body.schedule.data.item2;      connection.connect();      connection.query('INSERT INTO schedule (city,item1,item2) values ("'+id_city+'","'+task1+'", "'+task2+'")', function (error, results, fields) {         if (error) throw error;      });      // connection.end();        });}async function getDate(id_city){    var end;    for (var m = moment(a); m.isBefore(b); m.add(1, 'days')) {        getURL(id_city,m.format('YYYY-MM-DD'));        await timer(1000); //making delay               }}async function main () {        var url = 'https://localhost/api/format/json/list_city';    connection.connect();    request(url, { json: true }, (err, res, body) => {      if (err) { return console.log(err); }          var list_city = body.city; //this is an array          var counter = 0;          list_city.forEach(function(city){              getDate(city.id, function(){              });//i need this to complete before go to next city          });    });//end request url}main();
查看完整描述

2 回答

?
暮色呼如

TA貢獻1853條經(jīng)驗 獲得超9個贊

使用for循環(huán)代替forEach,并在每次迭代await中調用getDate,以便一個getDate調用始終在再次調用之前完成:


for (let i = 0; i < list_city.length; i++) {

  await getDate(city[i]);

  await timer(100); // this will put a delay of at least 100ms between each call

}

確保使包含功能async起作用。


請注意,由于getDate返回Promise,因此它可能不應該接受回調-而是將awaits或thens鏈接到末尾。


查看完整回答
反對 回復 2021-04-22
  • 2 回答
  • 0 關注
  • 314 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號