回答編集履歴

1 ミスがあったため修正。

kei344

kei344 score 64858

2016/04/15 02:56  投稿

```JavaScript
   (function() {
     var num = i;
     setTimeout(function() {
       console.log(num);
       d.resolve();
     }, 1000);
   })();
```
```JavaScript
   setTimeout((function(num) { return function() {
     console.log(num);
     d.resolve();
   };})(i), 1000);
```  
 
---  
 
**追記:**  
 
promise 見落としてました。  
 
```JavaScript  
var promise = $.Deferred().resolve().promise();  
for (var i = 0; i < 5; i++) {  
 promise = promise.then((function(num) { return function() {  
   var d = $.Deferred();  
   setTimeout((function(num) { return function() {  
     console.log(num);  
     d.resolve();  
   };})(num), 1000);  
   return d.promise();  
 };})(i));  
}  
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る