Question: Is it possible to loop a json object one by one ?  

let's say I have this object (text). I want to loop on `text` and get **next** item every 1 minute until I get them all. How can I do this in javascript ? 

```
 var text = 
        {
        "name":"John Johnson",
        "street":"Oslo West 16",
        "determine":"555 1234567",
        "JSON":"concernant",
        "you":"value"
        };

       setInterval(function(){
       //text.getnext
       }, 1000);

```

sorry if it is duplicated I have not found solution.

Answer: 
You can use `Object.keys` if the order is not important:

```
var keys = Object.keys(text), i = 0;

var myInterval = setInterval(function(){
   if(i >= keys.length) clearInterval(myInterval); // You need to clear the interval ;) 
   var current = text[keys[i++]];
  //.....
}, 1000*60); //1 minute

```

I hope this will help you.
You should first solve the generic problem of sending out the element of an array with some delay. Once you've done that, it's easy enough to apply that to the keys of an object.

Here's a simple version using `setTimeout`:

```
function emitWithDelay(array, callback) {
  var n = 0;

  function emitOne() {
    if (n >= array.length) return;

    setTimeout(function() {
      callback(array[n++]);
      emitOne();
    }, 1000);

  }

  emitOne();
}

```

Now you can just do 

```
emitWithDelay(Object.keys(obj), myCallback);

```

### Streams

This is a good problem for using streams, or observables. It is as simple as

```
Observable.from(Object.keys(obj))
  .delay(1000)
  .subscribe(elt => console.log("got elt", elt));

```

### Async approach

Another idea is to use async functions, an ES7 feature, as follows:

```
async function emitWithDelay(array, callback) {
  for (elt of array) {
    callback(elt);
    await sleep(1000);
  }
}

```

Where `sleep` is something like

```
function sleep(n) {
  return new Promise(resolve => setTimeout(resolve, n));
}

```

As you can see, the possibilities are endless.