javascript - Bluebird's Promise.settle doesn't resolve with the correct values -


मेरे पास निम्न कोड है:

  वापसी वादे। सेटल (मेल, imgur.uploadUrl ) .मैप (फ़ंक्शन (निरीक्षण) {if (inspection.isFulfilled ()) {return inspection.value ()। Data.link;} वापसी '#';})  

एक और ऊपर के वर्बोस संस्करण में समान समस्याएं प्रदर्शित होती हैं:

  वापसी वादे। सेटल (मेल, फ़ंक्शन (मैच) {वापसी imgur.uploadUrl (मैच);})। तब (फ़ंक्शन (परिणाम) { वापसी परिणाम;}) .मैप (फ़ंक्शन (निरीक्षण) {यदि (निरीक्षण .isFulfilled ()) {वापसी निरीक्षण। मूल्य (। डेटा.लिंक;} वापसी '#';})  
<

  • वादा = ब्लूबर्ड का वादा
  • मेल = एक स्ट्रिंग से निकाली गई छवि लिंक की एक सरणी < / Li>
  • imgur =

अपेक्षित व्यवहार यह है कि .map के परिणाम एक ऐसा वादा है जो संकल्पित है Imgur लिंक की एक सरणी के साथ मूल सरणी में छवियों को अपलोड करने के बाद imgur (या '#', अगर किसी भी कारण विफल अपलोड)

इसके बजाय क्या होता है कि Promise.settle तुरन्त को हल करता है (अर्थात अपलोड अपलोड की प्रतीक्षा नहीं होती है), और inspection.value () मैचों ऐरे से मूल छवि यूआरएल है (जो एक स्ट्रिंग की .data.link संपत्ति को पढ़ने का प्रयास करते समय त्रुटि देता है।)

ऐसा क्यों होता है? क्यों इसे अपलोड करने और सही ढंग से हल करने के लिए अपलोड नहीं करेगा?

जब मैं Promise.settle () , मैं केवल यह देखता हूं कि यह पहली बहस (वादों की एक सरणी की उम्मीद) की प्रक्रिया करता है। मैंने हमेशा इसका उपयोग Promise.all () के लिए विकल्प के रूप में किया है, जब आप सभी वादे पूरा करना चाहते हैं, भले ही कुछ त्रुटियां हों।

मुझे आश्चर्य है कि क्या ब्लूबर्ड दस्तावेज़ के लिए .settle () यह दूसरी तर्क के रूप में एक फ़ंक्शन लेते हुए गलत है, जो पहले सरणी को संसाधित करेगा? कोड का पालन करना थोड़ा कठिन है, लेकिन मुझे नहीं पता कि कैसे वादा। सेटल () कभी दूसरी तर्क का उपयोग करता है (जब तक कि यह सही कोड नहीं है जो मैं किसी कारण से देख रहा हूं )।

जैसा कि आप ने बताया है, एक विकल्प है:

  वादा। सेटल (matches.map (imgur.uploadUrl))। तब (...)  

जो कि .settle ()


एफवाईआई के लिए वादे की एक सरणी गुजरती हैं, मैं एक साधारण परीक्षण का मामला बनाकर और आगे बढ़कर सत्यापित हूं वादा। सेटल () डीबगर में जो कि दूसरे तर्क का उपयोग कभी नहीं करता है ऐसा प्रतीत होता है कि कार्यान्वयन से मेल खाने वाले दस्तावेज का कोई मामला नहीं है। मुझे उम्मीद है कि किसी को जो दस्तावेज तैयार किया गया है उसे लागू करने की योजना है, लेकिन कार्यान्वयन पूरा नहीं किया।


Comments