我有以下javascript承诺,正在遍历文档列表,将它们一个接一个地上传到Dropbox(API调用),获取每个文档的共享链接,将它们保存在数组中,然后生成一个通过电子邮件发送这些链接。

docs = self.checkedDocs();
body = "Please click on the link(s) below to view your document(s): ";
$.when.apply($, docs.map(function (doc) {
    return self.service.getDropboxLink(doc).then(function (dropboxLink) {
         return lineBreak + doc.documentDescription() + ": " + dropboxLink;
    });
})).done(function () {
    var attachment = [].join.call(arguments, '');
    formatEmail(attachment, body);
});


我想做的是完全相同的事情,但是对于一个文档,我知道我不再需要map了,但是我不确定该怎么做。

你能帮忙吗?

最佳答案

精确地使用$.when构造是因为您要等待几个promise。仅使用一个文档,大多数复杂性就消失了:

self.service.getDropboxLink(doc).then(function(dropboxLink) {
     var attachment = doc.documentDescription() + ": " + dropboxLink;
     openEmail("Please click on the link below to view your document: ", attachment);
});

10-07 13:15