como atribuir o valor retornado de uma promessa a uma variável? [duplicado]

Esta pergunta já tem uma resposta aqui:

Como faço para retornar a resposta de uma chamada assíncrona? 33 respostas

EDITADO como comentário para duplicar Cito de: [Como faço para retornar a resposta de uma chamada assíncrona?

Promessas são recipientes para valores futuros. Quando a promessa recebe o valor (é resolvido) ou quando é cancelada (rejeitada), notifica todos os seus "ouvintes" que desejam acessar esse valor.

Esta pergunta é sobre como retornar o valor contido na promessa. A resposta foi útil para mim, porque esclareceu que não é possívelRetorna o valor, em vez deacessar o valor dentro a função de promessa.

Outras fontes úteis sobre o assunto, aqui:

Como faço para retornar a resposta de uma chamada assíncrona?http://www.html5rocks.com/en/tutorials/es6/promises/jQuery adiado e promessas - .then () vs .done ().

Abaixo da pergunta original:

Você poderia ajudar a entender como obter o valor de uma promessa e as diferenças entre esses dois exemplos?

//I have a simple ajax call like:

var fetch = function(start_node, end_node) {
var apiEndpoint = 'localhost/nodes/';
var loadurl = apiEndpoint+start_node+'/'+end_node;
return $.ajax({
    url: loadurl,
    type: 'GET',
    dataType: 'json',
    jsonpCallback: 'json'

  });

};
// Then I processed results in something like:
    var getResult = function(data) {
      // do smtg with data
      var result = {'myobject' : result_from_data}
      return result
    }

E, finalmente, quero atribuir resultados.

O seguinte funciona, mas acho que desperdiça o conceito da promessa, pois o resultado é atribuído a uma variável global declarada antes:

var r;  
fetch('val1','val2')
.then(function(data){
  r = getResult(data);
})

Em vez disso, o seguinte atribui a função de promessa ares.

var res = fetch('val1','val2')
.done(function(data){
  return getResult(data);
})

Você poderia esclarecer como passar o resultado'myobject' para a variávelres, e não a promessa em si?

Eu também tentei:

var res = $.when(fetch('val1','val2'))
.done(function(data){
  return getResult(data);
})

mas sem sucesso.

questionAnswers(1)

yourAnswerToTheQuestion