我有以下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);
});