按顺序运行Promise

时间:2017-11-21 15:21:27

标签: javascript promise es6-promise

我的序列是:

  • 从本地服务器POST文件到Dropbox
  • 从本地服务器删除文件(POST成功后)
  • 为最近的 POST ed文件
  • 创建可共享的链接
  • 向用户发送新的可共享链接

(请注意我使用的是Dropbox API v2)

我的代码:

我正在使用request-promise-native库。

src

从我的理解(纠正我,如果我错了)承诺并行运行并返回一个超时值(无论哪个承诺首先解决)。如何按特定顺序运行promises?我是否在最佳实践中实施承诺?

1 个答案:

答案 0 :(得分:1)

如果在链中使用,您的承诺将按顺序工作。 我建议你也使用ES8 async/await功能来获得更漂亮的代码

let upload = async (req,res) => {

   let options = {
       method: 'POST',
       uri: 'https://content.dropboxapi.com/2/files/upload',
       headers: {
        'Authorization': 'Bearer Token here',
        'Dropbox-API-Arg': "{\"path\": \"/test/"+req.file.originalname+"\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}",
        'Content-Type': 'application/octet-stream'
       },body: fs.createReadStream(`uploads/${req.file.originalname}`)
   };

   try {
      const request = await rp(options);
      const dlf = await _deleteLocalFile(req.file.originalname);
      const shareableLink= await _generateShareableLink(req.file.originalname);
      const sendedResponse = await sendJsonResponse(res, 200, shareableLink);
   } catch(e) {
      await sendJsonResponse(res, 500, err);
   }

}