2016-02-10 10 views
25

पर पैरामीटर कैसे पास करें यह एक मूर्ख सवाल प्रतीत हो सकता है लेकिन मैं इस विषय में नौसिखिया हूं। मैं नोड जेएस पर वादों पर काम कर रहा हूं। और मैं एक वादे समारोह में पैरामीटर पास करना चाहता हूं। हालांकि मैं इसे समझ नहीं पाया।एक वादे समारोह

someModule.someFunction.then(username, password,function(uid) { 
    /*stuff */ 
} 

और समारोह की तरह

var someFunction = new Promise(username, password, function(resolve, reject) { 
    /*stuff using username, password*/ 
    if (/* everything turned out fine */) { 
    resolve("Stuff worked!"); 
    } else { 
    reject(Error("It broke")); 
    } 
}); 
+1

वहाँ ऐसा करने के लिए कोई कारण नहीं है, तो आप सिर्फ एक उच्च गुंजाइश – adeneo

+0

में 'username' और' password' परिभाषित कर सकते हैं लेकिन मैं एक और मॉड्यूल से वादा बोल रहा हूँ, और उपयोगकर्ता नाम और पासवर्ड स्थिर नहीं हैं बल्कि क्लाइंट-साइड से आ रहे हैं। क्या ग्लोबल वैरिएबल के कुछ किंड को परिभाषित करना सुरक्षित है जो एक फ़ंक्शन सेट करता है और दूसरा उपयोग करता है। क्या कोई जोखिम है कि परिवर्तनीय किसी अन्य ग्राहक द्वारा बदला जाता है? – kundante

+0

@ कुंडांटे आपको किसी भी ग्लोबल्स की आवश्यकता नहीं है। बंद करने के बारे में जानें। – SLaks

उत्तर

54

कुछ एक समारोह के अंदर अपने वादा लपेटें या इसे तुरंत अपना काम करने में शुरू कर देंगे है। इसके अलावा, आप कार्य करने के लिए मानकों को पारित कर सकते हैं: फिर

var someFunction = function(username, password) { 
    return new Promise(function(resolve, reject) { 
    /*stuff using username, password*/ 
    if (/* everything turned out fine */) { 
     resolve("Stuff worked!"); 
    } else { 
     reject(Error("It broke")); 
    } 
    }); 
} 

, इसका इस्तेमाल:

someModule.someFunction(username, password).then(function(uid) { 
    /* stuff */ 
}) 

 

ES6:

const someFunction = (username, password) => { 
    return new Promise((resolve, reject) => { 
    /*stuff using username, password*/ 

    if (/* everything turned out fine */) { 
     resolve("Stuff worked!"); 
    } else { 
     reject(Error("It broke")); 
    } 
    }); 
}; 

उपयोग:

+०१२३५१६४१०
someModule.someFunction(username, password).then(uid => { 
    /* stuff */ 
}); 
0

एक और तरीका है:

var promise1 = new Promise(function(resolve, reject) { 
 
    resolve('Success!'); 
 
}); 
 
var extraData = 'ImExtraData'; 
 
promise1.then(function(value) { 
 
    console.log(value, extraData); 
 
    // expected output: "Success!" "ImExtraData" 
 
}, extraData);