首页 > 解决方案 > node.js 上的功能延迟

问题描述

我遇到了一个大问题,我需要尽快做一个获取 trello 内容的应用程序,但我不知道为什么我的 for 不能正常工作。当我的输出应该是卡ID,当函数被调用时,它应该显示成员。我不知道为什么,但是当调用'miembro'函数时,它会延迟并且在第二个id之后显示,所以它延迟了很多,我需要他们在另一个下显示一个。感谢您的快速回答,谢谢!

const trelloKB = require("trello-kb");

const fetch = require('node-fetch');
 
// Replace this by the application key of your Trello account
var appKey = '51501902fff527d305686a29d6d61cfa';
 
// Replace this by a valid authorization token
var authToken = '9828f5f03073ae52ffdae77bdf49c939df8a315b169cb81aeb42a3d43d0f9e21';

function sleep(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}   

function miembros (id){
     fetch('https://api.trello.com/1/cards/'+id+'/members?key=51501902fff527d305686a29d6d61cfa&token=9828f5f03073ae52ffdae77bdf49c939df8a315b169cb81aeb42a3d43d0f9e21&fields=fullName', {
  method: 'GET'
})
  .then(response => {
      
    setTimeout(function() {
        return(response.text());
}, 3000);
  })
  .then(text => console.log(text))
  .catch(err => console.error(err));
  
    
}

 
trelloKB.get(appKey, authToken, '33CP31Sf').then(

    
  function (cards) {
    // Print the title of each card
    var ms = 3000;
    for(i=0; i<2; i++){
        
     var card = cards[0];
      var id = card.id;
      var titleCard = card.title;
    console.log(id);
    miembros(id);
    
    }  
      
    
    
    
  },

);

标签: node.jsasynchronous

解决方案


它被延迟了,因为您需要使用同步等待或 .then

您需要先获取第一个 ID,然后执行 .then 以通过函数调用获取第二个 ID。

此外,您不应该向您展示 API 密钥,它们应该是私有的,哈哈


推荐阅读