为什么node.js中有这么多的return语句

时间:2014-09-11 11:25:33

标签: javascript node.js return

我正在读一本关于backbone.js的书,并且有一个使用node.js构建API后端的例子。链接到该书:http://addyosmani.github.io/backbone-fundamentals/

在某些时候有这个代码

//Update a book
app.put( '/api/books/:id', function( request, response ) {
    console.log( 'Updating book ' + request.body.title );
    return BookModel.findById( request.params.id, function( err, book ) {
        book.title = request.body.title;
        book.author = request.body.author;
        book.releaseDate = request.body.releaseDate;

        return book.save( function( err ) {
            if( !err ) {
                console.log( 'book updated' );
                return response.send( book );
            } else {
                console.log( err );
            }
        });
    });
});

我不明白为什么有这么多的返回语句,因为这段代码也没有返回

//Update a book
app.put( '/api/books/:id', function( request, response ) {
    console.log( 'Updating book ' + request.body.title );
    BookModel.findById( request.params.id, function( err, book ) {
        book.title = request.body.title;
        book.author = request.body.author;
        book.releaseDate = request.body.releaseDate;

        book.save( function( err ) {
            if( !err ) {
                console.log( 'book updated' );
                response.send( book );
            } else {
                console.log( err );
            }
        });
    });
});

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

通常情况下,您会看到return用于出现错误并希望停止执行同一块中的下一行代码的情况。例如:

book.save(function(err) {
  if (err)
    return console.log(err);

  console.log('book updated');
  response.send(book);
});

它还有助于保存缩进级别。除此之外,从(异步)回调或事件处理程序返回值通常是无用的,因为返回值被完全忽略。