anc

Medicinal plants and fungi: recent advances in research and development / Dinesh Chandra Agrawal, Hsin-Sheng Tsay, Lie-Fen Shyur, Yang-Chang Wu, Sheng-Yang Wang, editors

Online Resource




anc

The drug development paradigm in oncology: proceedings of a workshop / Amanda Wagner Gee, Erin Balogh, Margie Patlak, and Sharyl J. Nass, rapporteurs ; National Cancer Policy Forum, Board on Health Care Services, Health and Medicine Division, the National

Online Resource




anc

Ancient psychoactive substances / edited by Scott M. Fitzpatrick

Hayden Library - RM315.A58 2018




anc

Anticancer plants: properties and application. / Mohd Sayeed Akhtar, Mallappa Kumara Swamy, editors

Online Resource




anc

Immunopharmacology and inflammation / Carlo Riccardi, Francesca Levi-Schaffer, Ekaterini Tiligada editors

Online Resource




anc

Chromatographic fingerprint analysis of herbal medicines.: thin-layer and high performance liquid chromatography of Chinese drugs / Hildebert Wagner, Stefanie Püls, Talee Barghouti, Anton Staudinger, Dieter Melchart, editors

Online Resource




anc

Particles and nanoparticles in pharmaceutical products: design, manufacturing, behavior and performance / Henk G. Merkus, Gabriel M. H. Meesters, Wim Oostra, editors

Online Resource




anc

Cancer Policy: Pharmaceutical Safety / June M. McKoy, Dennis P. West, editors

Online Resource




anc

Advances in nanomaterials for drug delivery: polymeric, nanocarbon and bio-inspired / Mahdi Karimi, Maryam Rad Mansouri, Navid Rabiee, Michael R. Hamblin

Online Resource




anc

Current applications for overcoming resistance to targeted therapies / editors, Myron R. Szewczuk, Bessi Qorri and Manpreet Sambi

Online Resource




anc

Cancer drug delivery systems based on the tumor microenvironment edited by Yasuhiro Matsumura, David Tarin

Online Resource




anc

The role of NIH in drug development innovation and its impact on patient access: proceedings of a workshop / Francis K. Amankwah, Alexandra Andrada, Sharyl J. Nass, and Theresa Wizemann, rapporteurs ; Board on Health Care Services ; Board on Health Scienc

Online Resource




anc

On Cancelable Promises

Update
The awesome Lie function got improved and became an official module (yet 30 lines of code thought). Its name is Dodgy, and it's tested and even more awesome!


Ifeverydevelopertalksaboutsimilarissues with Promises, maybe we should just drop our "religion" for an instant and meditate about it ...

Not today though, today is just fine

We've been demanding from JS and Web standards to give us lower level APIs and "cut the crap", but we can do even more than that: simply solve our own problems whenever we need, and "cut our own crap" by ourselves and for our own profit, instead of keep moaning without an outcome.
Today, after reading yet another rant about what's missing in current Promise specification, I've decided to write a very simple gist:


After so many discussions and bikeshead about this topic, I believe above gist simply packs in its simplicity all good and eventually bad intents from any voice of the chorus I've heard so far:
  1. if we are in charge of creating the Promise, we are the only one that could possibly make it abortable and only if we want to, it's an opt in rather than a default or a "boring to write" subclass
  2. it's widely agreed that cancellation should be rather synonymous of a rejection, there's no forever pending issue there, just a plain simple rejection
  3. one of the Promise strength is its private scope callback, which is inevitably the only place where defining abortability would make sense. Take a request, a timer, an event handler defined inside that callback, where else would you provide the ability to explicitly abort and cleanup the behavior if not there?
  4. being the callback the best pace to resolve, reject, and optionally to abort, that's also the very same place we want to be sure that if there was a reason to abort we can pass it along the rejection, so that we could simply ignore it in our optionally abort aware Promises, and yet drop out from any other in the chain whenever the rejection occurs or it's simply ignored
  5. the moment we make the promise malleable from the outer world through a p.abort() ability, is also the very same moment we could just decide to resolve, or fully fail the promise via p.resolve(value) or p.reject(error)
As example, and shown in the gist itself, this is how we could opt in:

var p = new Lie(function (resolve, reject, onAbort) {
var timeout = setTimeout(resolve, 1000, 'OK');
// invoking onAbort will explicit our intent to opt-in
onAbort(function () {
clearTimeout(timeout);
return 'aborted'; // will be used as rejected error
// it could even be undefined
// so it's easier to distinguish
// between real errors and aborts
});
});
After that, we can p.abort() or try other resolve or reject options with that p instance and track it's faith:

p.then(
console.log.bind(console),
console.warn.bind(console)
).catch(
console.error.bind(console)
);
Cool, uh? We have full control as developers who created that promise, and we can rule it as much as we like when it's needed ... evil-laugh-meme-here

Cooperative code

In case you are wondering what's the main reason I've called it Lie in the first place, it's not because a rejected Promise can be considered a lie, simply because its behavior is not actually the one defined by default per each Promise.
Fair enough for the name I hope, the problem might appear when we'd like to ensure our special abortable, resolvable, rejectable own Promise, shouldn't be passed around as such. Here the infinite amount of logic needed in order to solve this problem once for all:

var toTheOuterWorld = p.then(
function (data) {return data},
function (error) {return error}
);
// or even ...
var toTheOuterWorld = Promise.resolve(p);
That's absolutely it, really! The moment we'd like to pass our special Promise around and we don't want any other code to be able to mess with our abortability, we can simply pass a chained Promise, 'cause that's what every Promise is about: how cool is that?

// abortable promise
var cancelable = new Lie(function (r, e, a) {
var t = setTimeout(r, 5000, 'all good');
a(function () { clearTimeout(t); });
});

// testing purpose, will it resolve or not?
setTimeout(cancelable.reject, 1000, 'nope');
// and what if we abort before?
setTimeout(cancelable.abort, 750);



// generic promise, let's log what happens
var derived = cancelable.then(
function (result) { console.log('resolved', result); },
function (error) { error ?
console.warn('rejected', error) :
console.log('ignoring the .abort() call');
}
).catch(
function (error) { console.error('cought', error); }
);

// being just a Promise, no method will be exposed
console.log(
derived.resolve,
derived.reject,
derived.abort
);

Moaaar lies

If your hands are so dirty that you're trying to solve abort-ability down the chain, don't worry, I've got you covered!

Lie.more = function more(lie) {
function wrap(previous) {
return function () {
var l = previous.apply(lie, arguments);
l.resolve = lie.resolve; // optional bonus
l.reject = lie.reject; // optional bonus
l.abort = lie.abort;
return Lie.more(l);
};
}
if (lie.abort) {
lie.then = wrap(lie.then);
lie.catch = wrap(lie.catch);
}
return lie;
};
We can now chain any lie we want and abort them at any point in time, how cool is that?

var chainedLie = new Lie(function (res, rej, onAbort) {
var t = setTimeout(res, 1000, 'OK');
onAbort(function (why) {
clearTimeout(t);
return why;
});
})
.then(
console.log.bind(console),
console.warn.bind(console)
)
.catch(
console.error.bind(console)
);

// check this out
chainedLie.abort('because');
Good, if you need anything else you know where to find me ;-)
How to opt out from lies again?

var justPromise = Promise.resolve(chainedLie);
OK then, we've really solved our day, isn't it?!

As Summary

Promises are by definition the returned or failed value from the future, and there's no room for any abort or manually resolved or rejected operation in there.
... and suddenly we remind ourselves we use software to solve our problems, not to create more, so if we can actually move on with this issue that doesn't really block anyone from creating the very same simple logic I've put in place in about 20 well indented standard lines, plus extra optional 16 for the chainable thingy ... so what are we complaining about or why do even call ourselves developers if we get stuck for such little effort?
Let's fell and be free and pick wisely our own footgun once we've understood how bad it could be, and let's try to never let some standard block our daily job: we are all hackers, after all, aren't we?




anc

Mapping the country of regions: the Chorographic Commission of nineteenth-century Colombia / Nancy P. Appelbaum, the University of North Carolina Press, Chapel Hill

Hayden Library - GA693.7.A1 A77 2016




anc

The technocratic Antarctic: an ethnography of scientific expertise and environmental governance / Jessica O'Reilly

Dewey Library - G877.O74 2017




anc

The age of reconnaissance / J.H. Parry

Online Resource




anc

Advances in Remote Sensing and Geo Informatics Applications: Proceedings of the 1st Springer Conference of the Arabian Journal of Geosciences (CAJG-1), Tunisia 2018 / Hesham M. El-Askary, Saro Lee, Essam Heggy, Biswajeet Pradhan, editors

Online Resource




anc

Close Up at a Distance: Mapping, Technology, and Politics.

Online Resource




anc

Advances in Tourism, Technology and Smart Systems: Proceedings of ICOTTS 2019 / Álvaro Rocha, António Abreu, João Vidal de Carvalho, Dália Liberato, Elisa Alén González, Pedro Liberato, editors

Online Resource




anc

Historical geography, GIScience and textual snalysis: landscapes of time and place / Charles Travis, Francis Ludlow, Ferenc Gyuris, editors

Online Resource




anc

International Governance and Risk Management

Online Resource




anc

India and the knowledge economy: performance, perils, and prospects / Anand Kulkarni

Online Resource




anc

Measuring social change: performance and accountability in a complex world / Alnoor Ebrahim

Dewey Library - HD62.6.E277 2019




anc

Frontiers of strategic alliance research: negotiating, structuring and governing partnerships / edited by Farok Contractor, Rutgers University, New Jersey, Jeffrey Reuer, University of Colorado Boulder

Dewey Library - HD69.S8 F765 2019




anc

Advances in human factors, business management and leadership: proceedings of the AHFE 2019 International Conference on Human Factors, Business Management and Society, and the AHFE International Conference on Human Factors in Management and Leadership, Ju

Online Resource




anc

Enterprise Governance of Information Technology: Achieving Alignment and Value in Digital Organizations / Steven De Haes, Win Vam Grembergen, Anant Joshi, Tim Huygh

Online Resource




anc

Advances in data science and management: proceedings of ICDSM 2019 / Samarjeet Borah, Valentina Emilia Balas, Zdzislaw Polkowski, editors

Online Resource




anc

Sustainable business performance and risk management: risk assessment tools in the context of business risk levels related to threats and opportunities / Ruxandra Maria Bejinariu

Online Resource




anc

Statistical analysis of operational risk data Giovanni De Luca, Danilo Caritá, Francesco Martinelli

Online Resource




anc

Sustainability, stakeholder governance, and corporate social responsibility / edited by Sinziana Dorobantu (New York University, USA), Ruth V. Aguilera (Northeastern University, USA), Jiao Luo (University of Minnesota, USA), Frances J. Milliken (New York

Dewey Library - HD60.S88465 2018




anc

Stardance [manuscript] / by Spider & Jeanne Robinson ; adapted for radio by Ken Methold

Methold, Ken, 1931-




anc

Media analysis techniques / Arthur Asa Berger (San Francisco State University)

Berger, Arthur Asa, 1933- author




anc

How hysterical : identification and resistance in the Bible and film / Erin Runions

Runions, Erin, author




anc

The universe as it really is: Earth, space, matter, and time / Thomas R. Scott ; with the assistance of James Lawrence Powell

Hayden Library - QC806.S375 2018




anc

Health information science: 8th International Conference, HIS 2019, Xi'an, China, October 18-20, 2019, Proceedings / edited by Hua Wang, Siuly Siuly, Rui Zhou, Fernando Martin-Sanchez, Yanchun Zhang, Zhisheng Huang

Online Resource




anc

Ancillary benefits of climate policy: new theoretical developments and empirical findings / Wolfgang Buchholz, Anil Markandya, Dirk Rübbelke, Stefan Vögele, editors

Online Resource




anc

Orchestrating Local Climate Policy in the European Union: Inter-Municipal Coordination and the Covenant of Mayors in Germany and France / Lena Bendlin

Online Resource




anc

Value-based radiology: a practical approach / Carlos Francisco Silva, Oyunbileg von Stackelberg, Hans-Ulrich Kauczor, editors

Online Resource




anc

Essential radiology review: a question and answer guide / Adam E. M. Eltorai, Charles H. Hyman, Terrance T. Healey, editors

Online Resource




anc

Advanced practice and leadership in radiology nursing Kathleen A. Gross, editor

Online Resource




anc

Advances in computer methods and geomechanics: IACMAG Symposium 2019. / Amit Prashant, Ajanta Sachan, Chandrakant S. Desai, editors

Online Resource




anc

Solving practical engineering mechanics problems: advanced kinetics / Sayavur I. Bakhtiyarov

Online Resource




anc

Advances in Micro and Nano Manufacturing and Surface Engineering: roceedings of AIMTDR 2018 / M. S. Shunmugam, M. Kanthababu, editors

Online Resource




anc

Cyber-physical systems: advances in design & modelling / Alla G. Kravets, Alexander A. Bolshakov, Maxim V. Shcherbakov, editors

Online Resource




anc

Robotics research: the 18th International Symposium ISRR / Nancy M. Amato, Greg Hager, Shawna Thomas, Miguel Torres-Torriti, editors

Online Resource




anc

Mechatronics 2019: recent advances towards industry 4.0 / Roman Szewczyk, Jiří Krejsa, Michał Nowicki, Anna Ostaszewska-Liżewska, editors

Online Resource




anc

Advances in service and industrial robotics: proceedings of the 28th International Conference on Robotics in Alpe-Adria-Danube Region (RAAD 2019) / editors, Karsten Berns and Daniel Görges

Online Resource




anc

Robot 2019: Fourth Iberian Robotics Conference ; Advances in Robotics. / Manuel F. Silva [and more], editors

Online Resource




anc

Control performance assessment: theoretical analyses and industrial practice / Paweł D. Domański

Online Resource




anc

Advances in robotics research: from lab to market: ECHORD++: robotic science supporting innovation / Antoni Grau, Yannick Morel, Ana Puig-Pey, Francesca Cecchi, editors

Online Resource