只有调用函数subscribeToArray的上下文,才知道array的内容到底是什么。
调用上下文,只有一个参数input传给了subscribeToArray:
因此只有在Observable构造函数里,才能打印出input的真实数据:
源代码:
const a = of([1, 2, 3]);
const b = map((data: number[]) => {
for( let i = 0; i < data.length; i++){
data[i] = data[i] + 1;
}
console.log('data: ' + data);
return data;
} );
map的实现:
export function map(project, thisArg) {
return function mapOperation(source) {
if (typeof project !== 'function') {
throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');
}
return source.lift(new MapOperator(project, thisArg));
};
}
地址:
这里有几个术语:
project:就是应用开发人员传入map操作的回调函数。
map返回一个新的函数mapOperation, 这个operation也不会立即执行,而是等Observable的subscribe调用触发时,才真正执行。
这个map operator返回的类型:OperatorFunction<number[], number[]>
更多Jerry的原创文章,尽在:"汪子熙":
网友评论