2017-09-07 32 views
5

पर एकाधिक चर लौटें, मैं सोच रहा था कि दूसरे resolve मान (test2) को सरणी या जावास्क्रिप्ट ऑब्जेक्ट्स लौटाए बिना कोई तरीका है या नहीं।async/await

function testFunction() { 
 
\t return new Promise(function(resolve, reject) { 
 
    \t resolve("test1", "test2"); 
 
    }); 
 
} 
 

 
async function run() { 
 
\t var response = await testFunction(); 
 
    console.log(response); // test1 
 
} 
 

 
run();

+0

खैर क्या आप 'response' तो बनने के लिए उम्मीद करेंगे? – Bergi

+0

मुझे समझ में नहीं आ रहा है कि आप डेटा संरचना (ऑब्जेक्ट) लौटने से क्यों बचना चाहते हैं, इस तरह जावास्क्रिप्ट को ऐसी चीजों को करने के लिए बनाया गया है। –

+0

@MaciejSikora @ बरगी, मैं सोच रहा था कि अंतर्निहित कार्यक्षमता थी क्योंकि दोनों चर उपलब्ध हैं यदि आप एसिंक/प्रतीक्षा के बिना फ़ंक्शन कॉल का निर्माण करते हैं: 'testFunction()। (फ़ंक्शन (प्रतिक्रिया 1, प्रतिक्रिया 2) {...}) '। –

उत्तर

10

आप केवल एक आइटम पारित कर सकते हैं। लेकिन ES6 से शुरू होने पर Array Destructuring नामक एक अच्छी सुविधा है।

एक सरणी लौटें और आप हुड के नीचे गुण असाइनमेंट छोड़ सकते हैं।

function testFunction() { 
 
    return new Promise(function(resolve, reject) { 
 
    \t  resolve([ "test1", "test2"]); 
 
      }); 
 
} 
 

 
async function run() { 
 

 
    const [firstRes, secondRes] = await testFunction(); 
 
    
 
    console.log(firstRes, secondRes); 
 

 
} 
 

 
run();

+1

आपके उत्तर के लिए धन्यवाद! यह एक अच्छा समाधान है –

+0

मुझे अभी पता चला है कि 'const {response1, response2} = परीक्षण प्रतीक्षा करें फ़ंक्शन(); 'नोड.जेएस 8 में काम करता है। इसका उपयोग' उपयोग 'मॉड्यूल में' promisify' विधि द्वारा भी किया जाता है। तो सरणी वापस करने की कोई आवश्यकता नहीं है :-) –