javascript - w3schools - العودة من الوعد ثم()




wbr tag in html5 example (3)

لدي كود جافا سكريبت مثل هذا:

function justTesting() {
  promise.then(function(output) {
    return output + 1;
  });
}

var test = justTesting();

لقد حصلت دائمًا على قيمة غير محددة لاختبار var. أعتقد أن السبب في ذلك هو أن الوعود لم يتم حلها ، فهناك طريقة لإرجاع قيمة من الوعود؟

https://code.i-harness.com


بالنسبة لي رد الاتصال عملت في هذا الموقف. واجهت نفس المشكلة ، ولم تنجح جميع الإجابات السابقة (لا أعرف حقًا السبب). مثال على الكود الذي يجب أن يعمل:

function justTesting(callback) {
  promise.then(function(output) {
    return output + 1;
  });
}

then call it:

justTesting(function (yourOutput) {
    // here you can use your outpur from justTesting func
    var test = yourOutput;
})  

عندما تعيد شيئًا من رد اتصال then() ، يكون هذا سحريًا بعض الشيء. إذا قمت بإرجاع قيمة ، then() استدعاء التالي then() ذلك بتلك القيمة. ومع ذلك ، إذا قمت بإرجاع شيء مشابه للوعود ، then() تنتظره بعد ذلك ، ويتم استدعاؤها فقط عندما يستقر هذا الوعد (ينجح / يفشل).

عبر https://developers.google.com/web/fundamentals/getting-started/primers/promises#queuing_asynchronous_actions


ما قمت به هنا هو أنني عدت بوعد من وظيفة justTesting. يمكنك بعد ذلك الحصول على النتيجة عند حل الوظيفة.

// new answer

function justTesting() {
  return new Promise((resolve, reject) => {
    if (true) {
      return resolve("testing");
    } else {
      return reject("promise failed");
   }
 });
}

justTesting()
  .then(res => {
     let test = res;
     // do something with the output :)
  })
  .catch(err => {
    console.log(err);
  });

أتمنى أن يساعدك هذا!

// old answer

function justTesting() {
  return promise.then(function(output) {
    return output + 1;
  });
}

justTesting().then((res) => {
     var test = res;
    // do something with the output :)
    }




promise