definindo uma variável para obter o retorno da function de retorno de chamada usando a promise

Eu estou recebendo o valor de “object” em vez do valor exato. Como faço para obter o valor retornado usando uma function de retorno de chamada?

function loadDB(option, callBack){ var dfd = new jQuery.Deferred(), db = window.openDatabase('mydb', '1.0', 'Test DB', 1024*1024), selectQuery = "SELECT log FROM LOGS WHERE id = ?"; db.transaction(function(tx){ tx.executeSql(selectQuery,[option],function(tx,results){ var retval; if( results.rows.length ) { retval = unescape(results.rows.item(0)['log']); } var returnValue = dfd.resolve(retval); }); }); return dfd.promise(); } results = loadDB(2).then(function(val){ return val; } ); console.log("response***",results); 

Uma promise é como uma checkbox fechada:

insira a descrição da imagem aqui

Seu código acima com o object diferido, cria a checkbox e permite que você saiba que em algum momento no futuro você poderá abri-lo. Naquela época, o código acima chamaria .resolve .

Quando você faz results = loadDB(2) você está colocando uma checkbox nos resultados.

Uma promise também tem um método que abre a checkbox, trabalha no valor e retorna outra checkbox no valor (também abrindo quaisquer checkboxs adicionais ao longo do caminho). Esse método é.

Em checkboxs, faz:

insira a descrição da imagem aqui => ( aberto . => e ) => e

Isto é, pega a checkbox, abre e aplica uma function que faz algo com o valor nela e depois retorna outra checkbox com o novo valor nela.

Então, se você quer processar o valor, você precisa ligar o único lugar onde a checkbox está aberta, como Bergi sugeriu:

 loadDB(2).then(function(val){ console.log("response***", val); }); // this also returns a promise btw 

Você não pode obter o valor de resolução de um contexto de promise (aqui: asynchronous).

Em vez disso, você precisará mover a chamada console.log e tudo o mais que depende dela para o contexto da promise:

 loadDB(2).then(function(val){ console.log("response***", val); });