2016-08-02 27 views
5

Tôi gặp phải một chút vấn đề trong mã của tôi, điều này khiến tôi khó hiểu và hy vọng ai đó có thể giải thích lý do tại sao nó hoạt động.Chức năng mũi tên ES6 với các dấu ngoặc đơn

Mã 1

sendText(){ 
    return this.http.get('/api') 
     .map((response:Response) => response.json()); 
} 

Mã 2

sendText(){ 
    return this.http.get('/api').map((response:Response) => { 
     response.json(); 
    }); 
} 

Sự khác biệt chính giữa hai mã này là trong Mã 2 tôi đặt dấu ngoặc sau khi vào mũi tên chức năng để thêm công việc của tôi bên trong các dấu ngoặc đơn đó và trong Mã số 1 Tôi đã lấy các dấu ngoặc đơn và đặt nhiệm vụ trên một dòng.

Câu hỏi của tôi là tại sao đối tượng của tôi đến từ phía máy chủ trở lại như không xác định trong code2 với đăng ký phương pháp mà angular2 cung cấp trong khi Code1 trả về đối tượng tôi nghi ngờ.

+4

Với niềng răng, bạn phải sử dụng 'return' giống như trong chức năng cổ điển. – georg

+2

Không có dấu ngoặc vuông: biểu thức. Với dấu ngoặc: khối mã. –

Trả lời

10
(response:Response) => response.json() 

Đây là viết tắt cho việc này:

(response:Response) => { return response.json(); } 

Các {} cho phép bạn thêm nhiều báo cáo bên trong khối. Không có chúng, hàm chỉ chạy một câu lệnh và trả về giá trị của nó.

Tài liệu: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

+0

Bạn được chào đón. Ngoài ra, bạn có thể xóa một cái gì đó cho tôi? Tại sao bạn có 'phản hồi: Phản hồi' thay vì chỉ' phản hồi'? Điều đó giống như một gợi ý kiểu hay gì đó? –

+0

Uhmm từ những gì hướng dẫn đã nói với tôi. Nó là một cú pháp kiểu chữ đảm bảo cho tôi rằng nó là kiểu Response. Vì vậy, tránh các lỗi trong tương lai. Đừng chấp nhận lời của tôi mặc dù lol tôi vẫn đang học. Nó có cần thiết không? –

+0

Nó có thể là cần thiết trong Typecript, tôi không biết, tôi chưa bao giờ sử dụng nó. Trong JavaScript, đó là lỗi cú pháp. –

Các vấn đề liên quan