nl_tokens: 构造async接收的task
pl_tokens: function makeUploadTask ( cwd , file ) { var key = options . keyGen ( cwd , file ) ; function doUpload ( callback ) { var absolutePath = path . join ( cwd , file ) ; grunt . log . ok ( 'Start uploading the file [' + file + '], qiniu key is: [' + key + ']' ) ; client . uploadFile ( absolutePath , { key : key } , function ( err , result ) { if ( ! err ) { grunt . log . ok ( 'The file [' + file + '] has been uploaded yet.' ) ; } callback ( err , result ) ; } ) ; } return function ( callback ) { if ( options . ignoreDup ) { // 验证是否已经存在此文件，存在则不重复上传 client . stat ( key , function ( <mask> , stat ) { if ( err || stat . error ) { doUpload ( callback ) ; } else { grunt . log . ok ( 'The key [' + key + '] exists, so ignore it' ) ; callback ( null ) ; } } ) } else { doUpload ( callback ) } } }