✖
JSDeferred -> Angular $q 置き換え方法
AngularJS には $qっていう promise の枠組みがあるので、使っておくといいこと (ビューが自動的に更新されるだけだけど) がある。フレームワーク組込みの仕組みがあるのに別途 Deferred の仕組み、しかも thenable(笑) じゃない(笑) JSDeferred を読むのもバカにされると思うので、以下のように JSDeferred から Angular $q へ置き換える方法を記す。
基本
JSDeferred における global な next() 関数を $q.when().then() に置き換え、Deferred#next を then() に置き換えればだいたい動く
next(function () {
alert(1);
return next(function () {
alert(2);
}).
next(function () {
alert(3);
});
}).
next(function () {
alert(4);
});
こういうのを、こう
$q.when().then(function () {
alert(1);
return $q.when().then(function () {
alert(2);
}).
then(function () {
alert(3);
});
}).
then(function () {
alert(4);
});
parallel() は?
$q.all() を使え
loop() は?
頑張って書く。いろいろやりかたはあると思うけど、例えばこう
$q.when().then(function () {
var list = [1, 2, 3], sum = 0;
return $q.when().then(function loop () {
if (list.length) {
return $q.when(list.shift()).then(function(item) {
console.log('item', item);
sum += item;
}).then(loop);
} else {
return sum;
}
});
}).
then(function (result) {
console.log(result);
});
wait() は?
setiTimeout で頑張って書く
V-USB vs USB付きAVR
name (flash/sram) cost
USB 対応
- ATmega32u2 (32k/1k) 400円
- AT90USB162 (16k/0.5k) 300円
- 最大16MHz
- USB ホストにもなれる
- 12Mbps 対応
- 外付け部品が少し簡単
- 表面実装品しかない
V-USB
- ATmega328p (32k/2k) 250円
- ATmega168p (16k/1k) 200円
- ATTiny2313 (2k/128) 150円
- 最大20MHz (5V動作時)
- USBスレーブにしかなれない
- ファームウェアコードにいくらか制限あり (割込み頻度とか)
- ドライバが GPL
- DIPあり
感想
- V-USB はファームウェアを GPL にするか、ライセンス購入する必要があるが、個人の趣味レベルではどうでもいい
- 価格の絶対差はそれほどでもないが、同じ金額で1個買えるか、2個買えるかと考えるとだいぶ違いを感じる
- よりスマートなのは USB 対応のを使うことだと思うが、見た目的にはどっちもワンチップで完結する
- USB 対応品は、USB 周辺については 3.3V で動いておりレギュレータを内蔵している。V-USB は高いクロックで動かそうとするとVCCを5Vにせざるを得なくて、そこらへん泥臭くなってしまう