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月20日 星期一

[Debug] An NodeJS - Watch Expression - Example

records.filter(t => t.productCode.indexOf('&') >= 0)

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);
============================