2016年6月29日 星期三

[JS] Array.prototype.map

return: an array

var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots is now [1, 2, 3], numbers is still [1, 4, 9]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map


2016年6月14日 星期二

[ECMAScript 6] Promise

JavaScript6 Promise =/= Node.js Promise

Promise -> has a metadata "then" array storing list of functions

until resolve, the promise object puts the "then" list of functions into the queue
( previously store in the promise metadata )

javascript run through the queue


Ex 1
=============================
console.log('a');

setTimeout(function bbb() {
    console.log('bbb start');

    setTimeout(function bbb2() {
        console.log('bbb2 here');
    }, 1000);

    console.log('bbb end');
}, 1000);

console.log('c');

'abc'
=============================
Result:
a
c
abc
bbb start
bbb end
bbb2 here







Ex 2
=============================
console.log('a');

var bPromise = new Promise(resolve => {
    setTimeout(function bbb() {
        console.log('b');
        resolve(123);
    }, 1000);
});

setTimeout(function ddd() {
    bPromise.then(function eee() {
        console.log('e');
    });
}, 7000);

bPromise.then(function ccc() {
    console.log('c1');
});

bPromise.then(function ccc2() {
    console.log('c2');
});


console.log('oh');

'abc'
=============================
Result:
a
oh
abc
b
c1
c2
e







Ex 3
=============================
console.log('a');

var bPromise = new Promise(function (resolve) {
console.log('b');
setTimeout(function bbb() {
console.log('bbb');
resolve(123);
}, 1000);
});

var thenPromise = bPromise.then(function ccc() {
console.log('ccc');

return new Promise(resolve => {
   setTimeout(function eee() {
       console.log('e');
       resolve(123);
   }, 1000);
});
});

var thenPromise1 = bPromise.then(function ccc1(param) {
console.log('ccc1');
return 345;
});

thenPromise.then(function ddd(param) {
console.log('ddd');
});

'abc'
=============================
Result:
a
b
abc
bbb
ccc
ccc1
e
ddd



Ex 4
=============================
//create a class http which has get method which returns instance of promise

function http(url) {
  this.get = new Promise(function(resolve, reject) {
    var client = new XMLHttpRequest();
console.log('here');
    client.open('get', url);
    client.send();
    client.onload = function () { //If you observe carefully this is also registering a callback fn
      if (this.status == 200) {
console.log('resolve');
         resolve(this.response);
     } else {
console.log('reject');
       reject(this.statusText);
     }
   };
     client.onerror = function () {          reject(this.statusText);        }
  });
}

//using http module
var successCallBack = function(res) {
  console.log(res);
}

new http('/admin').get.then(successCallBack);
============================

[康復路] 試完又試

見了醫生,因為血色素又變低了,醫生想檢查是否「缺鐵」為成因,檢查又檢查…… 感覺有些麻煩……又抽血,又要留樣本…… 令我回想起當日入院的時光,因為一些原因,留樣本只需留一次,免卻留三次的麻煩;現在每天都要留一次,連續三天。每天早上就要跑醫院一趟再上班。 幸好也完成了。 第二次抽血...