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); });