Comments (3)
It doesn't feel right to me that a promise that yields no value should be able to implicitly cast to a null result.
There are two reasons for the interfaces.
- Having an interface allows a promise to be mocked.
- Having two interfaces allows you to seperate your concerns. One interface allows a promise to be awaited, the other allows a promise to be resolved.
from c-sharp-promise.
Just to clarify after thinking about this.
All Promises should still shuttle around an object reference, and that object ref can be null.
So a Then((x) => { Assert.That(x==null) })
on a Promise<object>
cast to a Promise
. This should work fine, given the following:
var Promise1 = new Promise((resolve,reject) => { resolve(); });
var Promise2 = new Promise<string>((resolve,reject) => { resolve("A"); });
var Promise3 = new Promise<int>((resolve,reject) => { resolve(1); });
Promise.All(Promise1, Promise2, Promise3)
//Could force this to be Promise<object>.All but realistically that should be the default I think
//but even Promise<object>.All doesnt work because Promise1 cant convert to IPromise<object>
.Then(results => {
Assert.That(results.ElementAt(0), Is.Null);
Assert.That(results.ElementAt(1), Is.NotNull);
Assert.That(results.ElementAt(1), Is.EqualTo("A"));
Assert.That(results.ElementAt(2), Is.NotNull);
Assert.That(results.ElementAt(2), 1);
}
Unless I'm not thinking about this correctly... lol
I will probably generate a PR for this, I worry that it'll touch every aspect of the library though.
from c-sharp-promise.
Just a question, was there a need for the IPromise interfaces? I dont actually see a need for them.
That way, Promise.All
takes Promise
types instead, and the implicit casts can easily shuttle Promise to Promise due to baseclass
public static Promise Promise.All(params Promise[] promises)
from c-sharp-promise.
Related Issues (20)
- Feature Request: Promise retry HOT 2
- How to exit from then when check some conditions HOT 6
- Not Usable inside Tasks? HOT 3
- NuGet Package outdated since last improvements
- Cancelling a promise. HOT 1
- Default and custom error handler HOT 1
- GC caused by Closure HOT 3
- OpenUPM support. Unity Package Manager HOT 3
- A unsolved ambiguous compile error
- Compile Errors in Unity 2020.2.6f1 HOT 1
- For a complete noob... how and what do I import to my Unity project to start using this? HOT 1
- Different results for javascript.Promise and C-Sharp-Promise HOT 2
- Support .NET Standard and 3.5 into the same Unity project HOT 1
- Some general questions about handling promises HOT 3
- Promises are not Serializable HOT 1
- Catch from a Promise<object> returns IPromise instead of IPromise<object> HOT 2
- Promise Queue? HOT 2
- How can I get response data at the first stage HOT 7
- Create an Unity Package of this library HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.