2017-06-12 30 views
5

Giriş kutum var. Kullanıcı yazmayı bıraktıktan sonra, bir HTTP isteği gerçekleştirmek ve sonuçları beklemek istiyorum.Async/wait kullanarak nasıl geri alabilirim?

ağ isteklerinin jsbin izin verilmez yana

Here's a jsbin

, yerine setTimeout() kullandım. Kutuda yazarken

var log = console.log.bind(console) 

var delayedResults = new Promise(function(resolve) { 
    setTimeout(function(){ 
    resolve('Wooo I am the result!') 
    }, 3000); 
}); 

document.querySelector('input').addEventListener('input', _.debounce(async function(){ 
    log('Doing search') 
    var result = await delayedResults 
    log('Result is', result) 
}), 500); 

Ancak 'arama yapmak' hemen her karakteri belirir - Sadece doldu 500ms sonra görünmesini istiyorum.

Geri dönmeyi nasıl kullanabilir ve bekleyebilirim?

cevap

5

sorun son satırında oldu: Zaman argüman belirtildi sonrasında

}), 500); 

Sen debounce işlev çağrısını kapatmak gerekir:

}, 500)); 

var log = console.log.bind(console) 
 

 
    var delayedResults = new Promise(function(resolve) { 
 
    setTimeout(function(){ 
 
     resolve('Wooo I am the result!') 
 
    }, 3000); 
 
    }); 
 

 
    document.querySelector('input').addEventListener('keydown', _.debounce(async function(){ 
 
    log('Doing search') 
 
    var result = await delayedResults; 
 
    log('Result is', result) 
 
    }, 500));
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script> 
 
<input>

+1

Ooh ince! Sanırım geçiyordu, fark etmedim. Teşekkür ederim! – mikemaccana

İlgili konular