मेरे पास वर्तमान में निम्नलिखित है:

twilio.calls
  .create({
    url: process.env.TWILIO_OUTGOING_XML,
    to: currentNumber,
    from: process.env.TWILIO_FROM_NUMBER
  })
  .then(function (call) {
    while (true) {
      getCallStatus(call);
    }
  });

function getCallStatus(x) {
  twilio.calls(x)
    .fetch()
    .then(call => console.log(call.status));
}

हालांकि, जबकि लूप के साथ यह कॉल की स्थिति को आउटपुट नहीं करेगा। जब मैं लूप को हटाता हूं, तो स्थिति कंसोल में लॉग हो जाती है, लेकिन यह केवल queued दिखाती है क्योंकि स्वाभाविक रूप से इसे केवल एक बार प्रारंभिक निर्माण पर स्थिति मिल रही है। तो, मैं कैसे सुनिश्चित कर सकता हूं कि मुझे हमेशा उपलब्ध कॉल की नवीनतम स्थिति मिल रही है?

1
Talisman 19 पद 2019, 04:18

1 उत्तर

आपका जबकि लूप आपके सभी कोड कमांड को "लॉक" करेगा, यह जेएस इंजन के ढेर को भर देता है, इसका मतलब है twilio.calls(x) निष्पादित किया गया है लेकिन console.log(call.status) कभी कॉल नहीं किया गया (जेएस इंजन कमांड को एक कतार में निष्पादित करता है) सदैव)।

जबकि लूप को एसिंक्रोनस क्रिया में बदलें जैसे setInterval:

twilio.calls
  .create({
    url: process.env.TWILIO_OUTGOING_XML,
    to: currentNumber,
    from: process.env.TWILIO_FROM_NUMBER
  })
  .then(function (call) {
    setInterval(function() {
      getCallStatus(call);
    }, 1000); // check call status every second
  });

function getCallStatus(x) {
  twilio.calls(x)
    .fetch()
    .then(call => console.log(call.status));
}
1
hoangdv 19 पद 2019, 03:09