2016-12-16 2 views
0

Учитывая пример:возвращаемое значение от Promise

function returnValue() { 
   return somePromise.then (
     function (someThing) { 
       return { 
         sucess: true, 
         data: someThing 
       } 
     }, 
     function (someError) { 
       return { 
         sucess: false, 
         data: someError 
       } 
     } 
  ) 
} 

Console.log (returnValue()) 

Что я должен сделать так, чтобы я на самом деле есть «нечто» или «someError»? А разве обещание не ожидается?

Просто обратите внимание ... когда я пишу такой код внутри «Meteor.methods», он работает точно так, как мне бы хотелось, то есть возвращает значение, которое я возвращаю клиенту, но вне «Метеор» .methods "или в клиенте (браузер, используя или не какой-либо фреймворк), тот, который у меня есть, является ожидающим.

ответ

0

Функция, переданная в .then(), возвращает результаты асинхронно. Promisevalue выполненных Promise будет доступен в качестве аргумента переданной функции. Console.log (returnValue()), как вы отметили, регистрирует сам Promise, а не Promisevalue. Цепь .then() до returnValue() звонок. Кроме того, Console.log (returnValue()) должен быть console.log().

let somePromise = Promise.resolve("abc"); 
 

 
function returnValue() { 
 
    return somePromise.then (
 
    function (someThing) { 
 
     return { 
 
     sucess: true, 
 
     data: someThing 
 
     } 
 
    }, 
 
    function (someError) { 
 
     return { 
 
     sucess: false, 
 
     data: someError 
 
     } 
 
    } 
 
    ) 
 
} 
 

 
returnValue().then(function(result) { 
 
    console.log(result) 
 
})

+0

Правильно, но не то, что принимает значение из обещания, или я должен признать, что это невозможно из браузера? – rogeriojlle

+0

@rogeriojlle Hesitant заявить, что «невозможно». Предлагает прочитать спецификацию [Promises/A +] (https://promisesaplus.com/) _ «Обещание представляет собой конечный результат асинхронной операции. Первичный способ взаимодействия с обещанием - это метод' then', который регистрирует обратные вызовы, чтобы получить либо возможную стоимость обещания, либо причину, по которой обещание не может быть выполнено ». См. также [Обещания] (https://www.promisejs.org/), [У вас отсутствует точка обещаний] (https://gist.github.com/domenic/3889970#youre-missing-the-point-of-promises). – guest271314

+0

@rogeriojlle См. [Что означает \ [\ [PromiseValue \] \] в консоли javascript и как это сделать] (http://stackoverflow.com/questions/28916710/what-does-promisevalue-mean-in -javascript-консоль и как-к-делать-я-получить его) – guest271314

Смежные вопросы